This broke windows.
[WebKit-https.git] / JavaScriptCore / ChangeLog
1 2010-04-19  Gavin Barraclough  <barraclough@apple.com>
2
3         Reviewed by NOBODY (rolling out r57829).
4         This broke windows.
5
6         * API/APIShims.h:
7         (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock):
8         (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock):
9         (JSC::APICallbackShim::APICallbackShim):
10         (JSC::APICallbackShim::~APICallbackShim):
11         * API/JSContextRef.cpp:
12         * Android.mk:
13         * Android.v8.wtf.mk:
14         * GNUmakefile.am:
15         * JavaScriptCore.exp:
16         * JavaScriptCore.gypi:
17         * JavaScriptCore.pro:
18         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
19         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
20         * JavaScriptCore.xcodeproj/project.pbxproj:
21         * runtime/Completion.cpp:
22         (JSC::checkSyntax):
23         (JSC::evaluate):
24         * runtime/Identifier.cpp:
25         (JSC::Identifier::remove):
26         (JSC::Identifier::checkCurrentIdentifierTable):
27         (JSC::createIdentifierTableSpecificCallback):
28         (JSC::createIdentifierTableSpecific):
29         * runtime/Identifier.h:
30         (JSC::ThreadIdentifierTableData::ThreadIdentifierTableData):
31         (JSC::defaultIdentifierTable):
32         (JSC::setDefaultIdentifierTable):
33         (JSC::currentIdentifierTable):
34         (JSC::setCurrentIdentifierTable):
35         (JSC::resetCurrentIdentifierTable):
36         * runtime/InitializeThreading.cpp:
37         (JSC::initializeThreadingOnce):
38         * runtime/JSGlobalData.cpp:
39         (JSC::JSGlobalData::create):
40         * wtf/WTFThreadData.cpp: Removed.
41         * wtf/WTFThreadData.h: Removed.
42
43 2010-04-19  Douglas Gregor  <dgregor@apple.com>
44
45         Reviewed and landed by Anders Carlsson.
46
47         * runtime/UStringImpl.h:
48         Fix class/struct declaration mismatches.
49
50 2010-04-19  Geoffrey Garen  <ggaren@apple.com>
51
52         Reviewed by Beth Dakin.
53
54         Checked in these tests I wrote becuase Balazs Kelemen wanted to use them.
55
56         * tests/perf: Added.
57         * tests/perf/bench-allocate-nonretained.js: Added.
58         * tests/perf/bench-allocate-retained.js: Added.
59
60 2010-04-19  Gavin Barraclough  <barraclough@apple.com>
61
62         Reviewed by NOBODY (windows build fix).
63
64         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
65
66 2010-04-16  Gavin Barraclough  <barraclough@apple.com>
67
68         Reviewed by Sam Weinig.
69
70         https://bugs.webkit.org/show_bug.cgi?id=37745
71         Move string uniquing tables to (new) WTFThreadData class.
72
73         Remove AtomicString's dependency on ThreadGlobalData so that we can move
74         WebCore's string classes up to WTF.
75
76         WTFThreadData.cpp/.h are based on ThreadGlobalData from WebCore.
77         Moved JSC & WebCore's string uniquing tables to this class.
78
79         This patch introduces a temporary layering violation in providing forward
80         declarations of classes from JSC and WTF; this will be resolved as we move
81         more string code up to WTF.
82
83         * API/APIShims.h:
84         (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock):
85         (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock):
86         (JSC::APICallbackShim::APICallbackShim):
87         (JSC::APICallbackShim::~APICallbackShim):
88         * API/JSContextRef.cpp:
89         * JavaScriptCore.exp:
90         * JavaScriptCore.xcodeproj/project.pbxproj:
91         * runtime/Completion.cpp:
92         (JSC::checkSyntax):
93         (JSC::evaluate):
94         * runtime/Identifier.cpp:
95         (JSC::Identifier::remove):
96         (JSC::Identifier::checkCurrentIdentifierTable):
97         * runtime/Identifier.h:
98         * runtime/InitializeThreading.cpp:
99         (JSC::initializeThreadingOnce):
100         * runtime/JSGlobalData.cpp:
101         (JSC::JSGlobalData::create):
102         * wtf/WTFThreadData.cpp: Copied from WebCore/platform/ThreadGlobalData.cpp.
103         (WTF::WTFThreadData::WTFThreadData):
104         (WTF::WTFThreadData::~WTFThreadData):
105         * wtf/WTFThreadData.h: Copied from WebCore/platform/ThreadGlobalData.h.
106         (WTF::WTFThreadData::atomicStringTable):
107         (WTF::WTFThreadData::initializeIdentifierTable):
108         (WTF::WTFThreadData::currentIdentifierTable):
109         (WTF::WTFThreadData::setCurrentIdentifierTable):
110         (WTF::WTFThreadData::resetCurrentIdentifierTable):
111         (WTF::wtfThreadData):
112
113 2010-04-19  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
114
115         Reviewed by Simon Hausmann.
116
117         [Qt] Build fix for WinCE.
118
119         Moved the include of the non-existing errno.h header file inside
120         platform guard macros.
121
122         * jit/ExecutableAllocatorFixedVMPool.cpp:
123
124 2010-04-18  Kwang Yul Seo  <skyul@company100.net>
125
126         Reviewed by Laszlo Gombos.
127
128         [WINCE] Don't define WTF_CPU_MIDDLE_ENDIAN=1
129         https://bugs.webkit.org/show_bug.cgi?id=37434
130
131         Windows CE supports little-endian format only, so don't define
132         WTF_CPU_MIDDLE_ENDIAN=1.
133
134         * wtf/Platform.h:
135
136 2010-04-18  Simon Hausmann  <simon.hausmann@nokia.com>
137
138         Reviewed by Laszlo Gombos.
139
140         [Qt] Fix JavaScriptCore's include path for WinCE builds
141
142         https://bugs.webkit.org/show_bug.cgi?id=36751
143
144         * JavaScriptCore.pri:
145
146 2010-04-16  Gavin Barraclough  <barraclough@apple.com>
147
148         Reviewed by nobody, build fix.
149
150 2010-04-16  Gavin Barraclough  <barraclough@apple.com>
151
152         Reviewed by nobody, build fix.
153
154 2010-04-16  Gavin Barraclough  <barraclough@apple.com>
155
156         Reviewed by Oliver Hunt.
157
158         Bug 37730 - Remove JSC::UString dependencies from WebCore::StringImpl
159         (Following on from bug #37675).
160
161         Make the argument ordering for UStringImpl's constructor & create
162         methods match, when passed a shared buffer.
163
164         * JavaScriptCore.exp:
165         * runtime/UStringImpl.cpp:
166         (JSC::UStringImpl::create):
167         * runtime/UStringImpl.h:
168
169 2010-04-15  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
170
171         Reviewed by Kenneth Rohde Christiansen.
172
173         Fix memory leak in QScriptEngine::evaluate().
174
175         QScriptEnginePrivate::evaluate should release temporary variables.
176
177         [Qt] QScriptEngine::evaluate has memory leak.
178         https://bugs.webkit.org/show_bug.cgi?id=37596
179
180         * qt/api/qscriptengine_p.cpp:
181         (QScriptEnginePrivate::evaluate):
182         * qt/api/qscriptengine_p.h:
183
184 2010-04-14  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
185
186         Reviewed by Kenneth Rohde Christiansen.
187
188         Fix a memory leak in QScriptValue::inherits.
189
190         [Qt] QScriptValue::inherits has a memory leak.
191         https://bugs.webkit.org/show_bug.cgi?id=37617
192
193         * qt/api/qscriptvalue_p.h:
194         (QScriptValuePrivate::inherits):
195
196 2010-04-14  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
197
198         Reviewed by Kenneth Rohde Christiansen.
199
200         Fix a few memory leaks in QScriptEngine.
201
202         Syntax checking caused memory leak, not all temporary variables were released.
203
204         [Qt] Syntax checking  in the QtScript cause a memory leak.
205         https://bugs.webkit.org/show_bug.cgi?id=37610
206
207         * qt/api/qscriptengine_p.cpp:
208         (QScriptEnginePrivate::checkSyntax):
209         * qt/api/qscriptsyntaxcheckresult.cpp:
210         (QScriptSyntaxCheckResultPrivate::errorMessage):
211         (QScriptSyntaxCheckResultPrivate::errorLineNumber):
212
213 2010-04-14  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
214
215         Reviewed by Kenneth Rohde Christiansen.
216
217         Fix memory leak inside QScriptEnginePrivate::makeJSValue.
218
219         QScriptEnginePrivate::makeJSValue should release temporary JSStringRef variable.
220
221         [Qt] tst_QScriptValue::toString has a memory leak.
222         https://bugs.webkit.org/show_bug.cgi?id=37598
223
224         * qt/api/qscriptengine_p.h:
225         (QScriptEnginePrivate::makeJSValue):
226
227 2010-04-14  Peter Varga  <pvarga@inf.u-szeged.hu>
228
229         Reviewed by Geoffrey Garen.
230
231         Move the YARR JIT fallback detection from RegexJIT.cpp to
232         RegexCompiler.cpp.
233
234         https://bugs.webkit.org/show_bug.cgi?id=37571
235
236         * yarr/RegexCompiler.cpp:
237         (JSC::Yarr::RegexPatternConstructor::atomBackReference):
238         (JSC::Yarr::RegexPatternConstructor::quantifyAtom):
239         * yarr/RegexJIT.cpp:
240         (JSC::Yarr::RegexGenerator::generateTerm):
241         (JSC::Yarr::RegexGenerator::RegexGenerator):
242         (JSC::Yarr::jitCompileRegex):
243         * yarr/RegexJIT.h:
244         (JSC::Yarr::RegexCodeBlock::operator!):
245         * yarr/RegexPattern.h:
246         (JSC::Yarr::RegexPattern::RegexPattern):
247         (JSC::Yarr::RegexPattern::reset):
248
249 2010-04-14  Kent Hansen  <kent.hansen@nokia.com>
250
251         Reviewed by Maciej Stachowiak.
252
253         Mac OS X: Use deployment target to determine whether memory tagging should be enabled
254         https://bugs.webkit.org/show_bug.cgi?id=34888
255
256         When building on (Snow) Leopard but targeting Tiger
257         (TARGETING_TIGER defined, BUILDING_ON_TIGER not defined),
258         WebKit would crash on Tiger because the tags passed to mmap
259         caused those function calls to fail.
260
261         Conversely, when building on Tiger but targeting Leopard
262         (BUILDING_ON_TIGER defined, TARGETING_LEOPARD defined), WebKit
263         would crash on Leopard because the tags passed to vm_map and
264         vm_allocate caused those function calls to fail.
265
266         Solution: Use TARGETING_TIGER rather than BUILDING_ON_TIGER to
267         govern the tag definitions. Use the same tags for vm_map and
268         vm_allocate regardless of target, since they work on
269         both. Fall back to the mmap tags that work on Tiger (that is,
270         "no tags") if targeting Tiger, since those tags also work on
271         Leopard.
272
273         * wtf/VMTags.h:
274
275 2010-04-12  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
276
277         Reviewed by nobody, build fix.
278
279         [Qt] Build fix for Mac when building with build-webkit --qt
280
281         Specifying no configuration on Mac builds WebCore both in debug
282         and release. JavaScriptCore has to follow this rule as well.
283
284         * JavaScriptCore.pro:
285
286 2010-04-11  Mark Rowe  <mrowe@apple.com>
287
288         Reviewed by Sam Weinig.
289
290         <rdar://problem/7851332> Fix the build.
291
292         * wtf/FastMalloc.cpp:
293         (WTF::TCMallocStats::): Initialize extra members of malloc_introspection_t to zero.
294
295 2010-04-09  Mikhail Naganov  <mnaganov@chromium.org>
296
297         Reviewed by Pavel Feldman.
298
299         Make CallIdentifier constructor to handle null urls.
300
301         https://bugs.webkit.org/show_bug.cgi?id=37341
302
303         * profiler/CallIdentifier.h:
304         (JSC::CallIdentifier::CallIdentifier):
305
306 2010-04-09  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
307
308         Reviewed by Simon Hausmann.
309
310         [Qt] Fix crashes with package builds in release
311
312         Add NDEBUG to the defines for package build in JavaScriptCore.pri,
313         so that it's consistently used for JavaScriptCore, WebCore, jsc and all
314         other tools using wtf, etc. data structures directly. Mixing NDEBUG with
315         non-NDEBUG builds causes crashes due to differences in data structures when
316         assertions/checks are enabled.
317
318         * JavaScriptCore.pri:
319
320 2010-04-09  Patrick Gansterer  <paroga@paroga.com>
321
322         Reviewed by Darin Adler.
323
324         Implement NO_RETURN for COMPILER(MSVC).
325         https://bugs.webkit.org/show_bug.cgi?id=33056 
326
327         Added NO_RETURN_WITH_VALUE for functions with non-void return type.
328
329         * jsc.cpp:
330         * wtf/AlwaysInline.h:
331         * wtf/FastMalloc.cpp:
332
333 2010-04-08  Kwang Yul Seo  <skyul@company100.net>
334
335         Reviewed by Simon Hausmann.
336
337         [WINCE] Check if ARM or _ARM_ is defined
338         https://bugs.webkit.org/show_bug.cgi?id=37200
339
340         MSVC defines ARM and _ARM_ for Windows CE ARM. Define WTF_CPU_ARM=1
341         when either ARM or _ARM_ is defined.
342
343         * wtf/Platform.h:
344
345 2010-04-08  Csaba Osztrogonác  <ossy@webkit.org>
346
347         Reviewed Oliver Hunt.
348
349         [Qt]r57240 broke Qt build (might be a gcc bug)
350         https://bugs.webkit.org/show_bug.cgi?id=37253
351
352         Workaround until fix. On PLATFORM(QT) use inline instead of ALWAYS_INLINE.
353
354         * wtf/PassRefPtr.h: Qt guards added.
355
356 2010-04-07  Oliver Hunt  <oliver@apple.com>
357
358         Reviewed by Anders Carlsson.
359
360         Vector<UString> makes many needless calls to UString::UString and UString::~UString
361
362         Add a VectorTrait<UString> specialisation to allow vector to simply memset/memcpy
363         data around.  Only difference from the VectorTrait<RefPtr<T> > traits is the inability
364         to use memset to initialize data.
365
366         * runtime/UString.h:
367         (WTF::):
368
369 2010-04-07  Oliver Hunt  <oliver@apple.com>
370
371         Reviewed by Geoff Garen.
372
373         Beat gcc with a clue bat -- force inlining of refIfNotNull and derefIfNotNull
374
375         * wtf/PassRefPtr.h:
376
377 2010-04-07  Kwang Yul Seo  <skyul@company100.net>
378
379         Reviewed by Darin Adler.
380
381         Replace isprint with isASCIIPrintable
382         https://bugs.webkit.org/show_bug.cgi?id=37223
383
384         WebKit does not use functions in <ctype.h> as they are dependent on the current
385         locale. Use the equivalent functions in <wtf/ASCIICType.h>. isASCIIPrintable
386         replaces isprint.
387
388         * pcre/pcre_exec.cpp:
389         (pchars):
390
391 2010-04-07  Enrica Casucci  <enrica@apple.com>
392
393         Reviewed by Darin Adler.
394
395         https://bugs.webkit.org/show_bug.cgi?id=37219
396         
397         This change disables text caret for the iPhone platflorm.
398         
399         * wtf/Platform.h: Disabled text caret for iPhone.
400
401 2010-04-06  Adam Barth  <abarth@webkit.org>
402
403         Reviewed by Eric Seidel.
404
405         REGRESSION: Worker termination via JS timeout may cause worker tests like fast/workers/worker-terminate.html fail.
406         https://bugs.webkit.org/show_bug.cgi?id=36646
407
408         Add a new exception type for forcibly terminating a JavaScript stack.
409         The new exception functions similarly to the
410         InterruptedExecutionException but is conceptually different because
411         execution is terminated instead of just interrupted.
412
413         * GNUmakefile.am:
414             - Added new Terminator.h file.
415         * JavaScriptCore.gypi:
416             - Added new Terminator.h file.
417         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
418             - Added new Terminator.h file.
419         * JavaScriptCore.xcodeproj/project.pbxproj:
420             - Added new Terminator.h file.
421         * interpreter/Interpreter.cpp:
422         (JSC::Interpreter::throwException):
423             - Fully unwind the stack for TerminatedExecutionException.
424         (JSC::Interpreter::privateExecute):
425             - Check if we've been terminated at the same time we check if we've
426               timed out.
427         * jit/JITStubs.cpp:
428         (JSC::DEFINE_STUB_FUNCTION):
429             - Check if we've been terminated at the same time we check if we've
430               timed out.
431         * runtime/Completion.cpp:
432             - Some exceptions define special completion types so that calls can
433               see why we terminated evaluation.
434         (JSC::evaluate):
435         * runtime/Completion.h:
436             - Define a new completion type for termination.
437         (JSC::):
438         * runtime/ExceptionHelpers.cpp:
439             - Define TerminatedExecutionException and refactor pseudo-RTTI
440               virtual function to be more semantic.
441         (JSC::InterruptedExecutionError::exceptionType):
442         (JSC::TerminatedExecutionError::TerminatedExecutionError):
443         (JSC::TerminatedExecutionError::exceptionType):
444         (JSC::TerminatedExecutionError::toString):
445         (JSC::createTerminatedExecutionException):
446         * runtime/ExceptionHelpers.h:
447             - Entry point for generating a TerminatedExecutionException.
448         * runtime/JSGlobalData.cpp:
449         (JSC::JSGlobalData::JSGlobalData):
450             - Add a Terminator object that can be used to asynchronously
451               terminate a JavaScript execution stack.
452         * runtime/JSGlobalData.h:
453         * runtime/JSObject.h:
454         (JSC::JSObject::exceptionType):
455             - Define that, by default, thrown objects have a normal exception
456               type.
457         * runtime/Terminator.h: Added.
458             - Added a new controller object that can be used to terminate
459               execution asynchronously.  This object is more or less a
460               glorified bool.
461         (JSC::Terminator::Terminator):
462         (JSC::Terminator::termianteSoon):
463         (JSC::Terminator::shouldTerminate):
464
465 2010-04-05  Oliver Hunt  <oliver@apple.com>
466
467         And another one.
468
469         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
470
471 2010-04-05  Oliver Hunt  <oliver@apple.com>
472
473         And another build fix.
474
475         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
476
477 2010-04-05  Oliver Hunt  <oliver@apple.com>
478
479         Build fix
480
481         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
482
483 2010-04-05  Oliver Hunt  <oliver@apple.com>
484
485         Reviewed by Gavin Barraclough.
486
487         Support weak maps in JSC
488         https://bugs.webkit.org/show_bug.cgi?id=37132
489
490         Expose an API to allow creation of a map for storing
491         weak JS references.
492
493         * API/JSWeakObjectMapRefInternal.h: Added.
494         (OpaqueJSWeakObjectMap::create):
495         (OpaqueJSWeakObjectMap::map):
496         (OpaqueJSWeakObjectMap::~OpaqueJSWeakObjectMap):
497         (OpaqueJSWeakObjectMap::OpaqueJSWeakObjectMap):
498         * API/JSWeakObjectMapRefPrivate.cpp: Added.
499         * API/JSWeakObjectMapRefPrivate.h: Added.
500         * JavaScriptCore.exp:
501         * JavaScriptCore.xcodeproj/project.pbxproj:
502         * runtime/JSGlobalObject.h:
503         (JSC::JSGlobalObject::registerWeakMap):
504         (JSC::JSGlobalObject::deregisterWeakMap):
505
506 2010-04-05  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
507
508         Reviewed by Kenneth Rohde Christiansen.
509
510         [Symbian] Consolidate Symbian WINSCW environment configuration
511         https://bugs.webkit.org/show_bug.cgi?id=37100
512
513         Move the "undefinition" of WIN32 and _WIN32 from WebCore/config.h
514         to JavaScriptCore/wtf/Platform.h as it is not specific to WebCore.
515
516         PLATFORM(WIN) and OS(WIN) no longer needs to be undefined as
517         undefining WIN32 takes care of it.
518
519         * wtf/Platform.h:
520
521 2010-04-03  Gavin Barraclough  <barraclough@apple.com>
522
523         Reviewed by Oliver Hunt.
524
525         https://bugs.webkit.org/show_bug.cgi?id=37068
526         Change UString to use a 0 rep for null strings instead of a null object.
527
528         No performance impact.
529
530         * JavaScriptCore.exp:
531         * runtime/InternalFunction.cpp:
532         (JSC::InternalFunction::InternalFunction):
533         * runtime/JSString.h:
534         (JSC::RopeBuilder::JSString):
535         * runtime/UString.cpp:
536         (JSC::initializeUString):
537         * runtime/UString.h:
538         (JSC::UString::UString):
539         (JSC::UString::data):
540         (JSC::UString::size):
541         (JSC::UString::isNull):
542         (JSC::UString::isEmpty):
543         (JSC::UString::cost):
544
545 2010-04-03  Balazs Kelemen  <kb@inf.u-szeged.hu>
546
547         Reviewed by Oliver Hunt.
548
549         Fix uninitalised members in CallLinkInfo and BytecodeGenerator.
550
551         https://bugs.webkit.org/show_bug.cgi?id=36816
552
553         * bytecode/CodeBlock.cpp:
554         (JSC::CodeBlock::CodeBlock):
555         * bytecode/CodeBlock.h:
556         (JSC::CallLinkInfo::CallLinkInfo):
557
558 2010-04-03  yael aharon  <yael.aharon@nokia.com>
559
560         Reviewed by Darin Adler.
561
562         Enable HTMLProgressElement for Safari on OSX
563         https://bugs.webkit.org/show_bug.cgi?id=36961
564
565         * Configurations/FeatureDefines.xcconfig:
566
567 2010-04-02  Ruben Van Boxem  <vanboxem.ruben@gmail.com>
568
569         Reviewed by Eric Seidel.
570
571         Mingw-w64 fixes for JavaScriptCore
572         https://bugs.webkit.org/show_bug.cgi?id=35607
573
574         * runtime/Collector.cpp: use the msvc code for mingw-w64 (but not mingw-w32)
575         (JSC::Heap::allocateBlock):
576         (JSC::Heap::freeBlockPtr):
577         (JSC::currentThreadStackBase):
578         (JSC::currentThreadStackBase):
579         * wtf/Platform.h: added COMPILER(MINGW64) check to differentiate between mingw.org and mingw-w64 functions
580
581 2010-04-02  Geoffrey Garen  <ggaren@apple.com>
582
583         Build fix: updated the .def file.
584
585         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
586
587 2010-04-02  Geoffrey Garen  <ggaren@apple.com>
588
589         Reviewed by Oliver Hunt.
590
591         Inlined toThisString and toThisJSString to avoid virtual function call overhead
592         https://bugs.webkit.org/show_bug.cgi?id=37039
593         
594         Maybe a 1% speedup on iBench JS.
595
596         * JavaScriptCore.exp: New exports.
597
598         * runtime/JSCell.cpp:
599         * runtime/JSCell.h:
600         * runtime/JSNumberCell.cpp:
601         * runtime/JSNumberCell.h:
602         * runtime/JSString.cpp:
603         * runtime/JSString.h:
604         * runtime/JSValue.h:
605         * runtime/JSZombie.h:
606         (JSC::JSZombie::toThisObject): Nixed the old virtual-type implementation.
607
608         * runtime/JSObject.h:
609         (JSC::JSValue::toThisString):
610         (JSC::JSValue::toThisJSString): Added the inlined implementation.
611
612 2010-04-02  Jeremy Moskovich  <jeremy@chromium.org>
613
614         Reviewed by Geoffrey Garen.
615
616         Beef up documentation for ASSERT* and CRASH macros a bit.
617
618         https://bugs.webkit.org/show_bug.cgi?id=36527
619
620         * wtf/Assertions.h:
621
622 2010-04-02  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
623
624         Unreviewed, minor build fix.
625
626         Change the order of the member initialisation list
627         in constructor to match declaration order
628
629         * runtime/Collector.cpp:
630         (JSC::Heap::Heap):
631
632 2010-04-01  Kinuko Yasuda  <kinuko@chromium.org>
633
634         Reviewed by Dmitry Titov.
635
636         Add FileThread for async file operation support in FileReader and FileWriter
637         https://bugs.webkit.org/show_bug.cgi?id=36896
638
639         Add ENABLE_FILE_READER and ENABLE_FILE_WRITER flags.
640
641         * Configurations/FeatureDefines.xcconfig:
642
643 2010-03-31  Gavin Barraclough  <barraclough@apple.com>
644
645         Reviewed by NOBODY (windows build fix pt II).
646
647         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
648
649 2010-03-31  Gavin Barraclough  <barraclough@apple.com>
650
651         Reviewed by NOBODY (windows build fix).
652
653         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
654
655 2010-03-31  Gavin Barraclough  <barraclough@apple.com>
656
657         Reviewed by Geoff Garen.
658
659         Bug 36871 - Remove JSC::CString
660         Use WTF::CString instead (which until recently was WebCore::CString).
661
662         * JavaScriptCore.exp:
663         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
664         * runtime/UString.cpp:
665         * runtime/UString.h:
666
667 2010-03-31  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
668
669         Unreviewed, fix after r56842.
670
671         Add UNUSED_PARAM a to silence warning.
672
673         * jit/JITStubs.cpp:
674         (JSC::DEFINE_STUB_FUNCTION):
675
676 2010-03-31  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
677
678         Unreviewed, Symbian build fix.
679
680         Refactor JITStubs.cpp so that the list of STUB_FUNCTIONs
681         are not dependent on the JSVALUE32_64 guard.
682
683         * jit/JITStubs.cpp: Place the JSVALUE32_64 guard inside 
684         the body of cti_op_eq_strings.
685         * jit/JITStubs.h: Remove JSVALUE32_64 guard from 
686         cti_op_eq_strings stub.
687
688 2010-03-30  Gavin Barraclough  <barraclough@apple.com>
689
690         Reviewed by NOBODY (windows build fix).
691
692         Fixing b0rked version of JavaScriptCore.vcproj - added lines were truncated.
693
694         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
695
696 2010-03-30  Gavin Barraclough  <barraclough@apple.com>
697
698         Rubber stamped by Sam Weinig.
699
700         https://bugs.webkit.org/show_bug.cgi?id=36866
701         Move CString to WTF
702
703         * Android.mk:
704         * GNUmakefile.am:
705         * JavaScriptCore.exp:
706         * JavaScriptCore.gypi:
707         * JavaScriptCore.pro:
708         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
709         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
710         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
711         * JavaScriptCore.xcodeproj/project.pbxproj:
712         * wtf/text: Added.
713         * wtf/text/CString.cpp: Copied from WebCore/platform/text/CString.cpp.
714         * wtf/text/CString.h: Copied from WebCore/platform/text/CString.h.
715         (WTF::CStringBuffer::data):
716         (WTF::CStringBuffer::length):
717         (WTF::CStringBuffer::create):
718         (WTF::CStringBuffer::CStringBuffer):
719         (WTF::CStringBuffer::mutableData):
720         (WTF::CString::CString):
721         (WTF::CString::isNull):
722         (WTF::CString::buffer):
723         (WTF::operator!=):
724
725 2010-03-30  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
726
727         Reviewed by nobody, build break.
728
729         [Qt] Fix build break on Qt Mac.
730
731         DESTDIR path on Mac do not include the configuration path by default
732         like on Windows. Have to force it.
733
734         * JavaScriptCore.pro:
735
736 2010-03-29  Alice Liu  <alice.liu@apple.com>
737
738         Reviewed by NOBODY (build fix).
739
740         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
741         add JSObjectRefPrivate.h
742
743 2010-03-29  Chao-ying Fu  <fu@mips.com>
744
745         Reviewed by Oliver Hunt.
746
747         MIPS JIT Supports
748         https://bugs.webkit.org/show_bug.cgi?id=30144
749
750         The following changes enable MIPS JIT.
751
752         * assembler/MIPSAssembler.h:
753         (JSC::MIPSAssembler::lbu):
754         (JSC::MIPSAssembler::linkWithOffset):
755         * assembler/MacroAssemblerMIPS.h:
756         (JSC::MacroAssemblerMIPS::load8):
757         (JSC::MacroAssemblerMIPS::branch8):
758         (JSC::MacroAssemblerMIPS::branchTest8):
759         (JSC::MacroAssemblerMIPS::setTest8):
760         (JSC::MacroAssemblerMIPS::setTest32):
761         * jit/JIT.h:
762         * jit/JITInlineMethods.h:
763         (JSC::JIT::preserveReturnAddressAfterCall):
764         (JSC::JIT::restoreReturnAddressBeforeReturn):
765         * jit/JITOpcodes.cpp:
766         * jit/JITStubs.cpp:
767         (JSC::JITThunks::JITThunks):
768         * jit/JITStubs.h:
769         (JSC::JITStackFrame::returnAddressSlot):
770         * wtf/Platform.h:
771
772 2010-02-26  Kenneth Rohde Christiansen  <kenneth@webkit.org>
773
774         Reviewed by Simon Fraser.
775
776         Add support for Widgets 1.0: View Mode Media Feature
777         https://bugs.webkit.org/show_bug.cgi?id=35446
778
779         Add an enable flag for the Widgets (http://www.w3.org/TR/widgets-reqs/)
780         and turn it on for Qt only.
781
782         * wtf/Platform.h:
783
784 2010-03-29  Patrick Gansterer  <paroga@paroga.com>
785
786         Reviewed by Darin Adler.
787
788         Corrected name of (u)int64_t compile time assert.
789         https://bugs.webkit.org/show_bug.cgi?id=36739
790
791         int64_t_is_four_bytes -> int64_t_is_eight_bytes
792
793         * os-win32/stdint.h:
794
795 2010-03-29  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
796
797         Reviewed by Simon Hausmann.
798
799         [Qt] Use the -l syntax for linking against JavaScriptCore on Windows.
800         This allow qmake to extract dependencies correctly when generating VS
801         solutions.
802
803         * JavaScriptCore.pri:
804
805 2010-03-29  Thomas Zander  <t.zander@nokia.com>
806
807         Reviewed by Simon Hausmann.
808
809         https://bugs.webkit.org/show_bug.cgi?id=36742
810
811         gcc for Symbian doesn't support gcc extensions like atomicity.h - disable
812
813         * wtf/Threading.h: also detect os symbian
814
815 2010-03-28  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
816
817         Reviewed by Simon Hausmann.
818
819         [Qt] Remove the definition of WTF_CHANGES guards from the build system
820         https://bugs.webkit.org/show_bug.cgi?id=31670
821   
822         * JavaScriptCore.pro: Remove the definition of WTF_CHANGES
823         as it is already defined in config.h
824
825 2010-03-28  Kent Hansen  <kent.hansen@nokia.com>
826
827         Reviewed by Simon Hausmann.
828
829         [Qt] Add API for reporting additional memory cost of JavaScript objects
830         https://bugs.webkit.org/show_bug.cgi?id=36650
831
832         * qt/api/qscriptengine.cpp:
833         (QScriptEngine::reportAdditionalMemoryCost):
834         * qt/api/qscriptengine.h:
835         * qt/api/qscriptengine_p.h:
836         (QScriptEnginePrivate::reportAdditionalMemoryCost):
837         * qt/tests/qscriptengine/tst_qscriptengine.cpp:
838         (tst_QScriptEngine::reportAdditionalMemoryCost):
839
840 2010-03-28  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
841
842         Reviewed by Simon Hausmann.
843
844         QScriptEngine API was enriched by globalObject() method
845         which give an access to the global object.
846
847         [Qt] QScriptEngine doesn't give an access to global object
848         https://bugs.webkit.org/show_bug.cgi?id=36603
849
850         * qt/api/qscriptengine.cpp:
851         (QScriptEngine::globalObject):
852         * qt/api/qscriptengine.h:
853         * qt/api/qscriptengine_p.cpp:
854         (QScriptEnginePrivate::globalObject):
855         * qt/api/qscriptengine_p.h:
856         * qt/tests/qscriptengine/tst_qscriptengine.cpp:
857         (tst_QScriptEngine::globalObject):
858
859 2010-03-26  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
860
861         Reviewed by Simon Hausmann.
862
863         [Qt] Build JavaScriptCore as a static library.
864         https://bugs.webkit.org/show_bug.cgi?id=36590
865
866         This patch takes what was left of the unused JavaScriptCore.pro
867         and moved the compilation logic from JavaScriptCore.pri to
868         JavaScriptCore.pro.
869
870         * JavaScriptCore.pri:
871         * JavaScriptCore.pro:
872         * jsc.pro:
873         * qt/api/QtScript.pro:
874
875 2010-03-25  Gavin Barraclough  <barraclough@apple.com>
876
877         Reviewed by NOBODY (build fix).
878
879         * profiler/ProfileGenerator.cpp:
880         (JSC::ProfileGenerator::willExecute):
881         (JSC::ProfileGenerator::didExecute):
882
883 2010-03-25  Gavin Barraclough  <barraclough@apple.com>
884
885         Reviewed by Geoff Garen.
886
887         Bug 36611 - Cleanup JSC::CString
888         Rename CString::c_str() -> CString::data(), CString::size() -> CString::length(),
889         remove UString::getCString() (all uses are wrong, should use UString::UTF8String()).
890
891         * bytecode/CodeBlock.cpp:
892         (JSC::CodeBlock::printUnaryOp):
893         (JSC::CodeBlock::printBinaryOp):
894         (JSC::CodeBlock::printConditionalJump):
895         (JSC::CodeBlock::printGetByIdOp):
896         (JSC::CodeBlock::printPutByIdOp):
897         (JSC::printGlobalResolveInfo):
898         (JSC::printStructureStubInfo):
899         (JSC::CodeBlock::printStructure):
900         (JSC::CodeBlock::printStructures):
901         (JSC::CodeBlock::dump):
902         * jsc.cpp:
903         (functionPrint):
904         (functionDebug):
905         (runInteractive):
906         (fillBufferWithContentsOfFile):
907         * profiler/CallIdentifier.h:
908         (JSC::CallIdentifier::c_str):
909         * profiler/Profile.cpp:
910         (JSC::Profile::debugPrintDataSampleStyle):
911         * profiler/ProfileNode.cpp:
912         (JSC::ProfileNode::debugPrintData):
913         (JSC::ProfileNode::debugPrintDataSampleStyle):
914         * runtime/DateConversion.cpp:
915         (JSC::parseDate):
916         * runtime/JSGlobalObjectFunctions.cpp:
917         (JSC::encode):
918         (JSC::globalFuncJSCPrint):
919         * runtime/UString.cpp:
920         (JSC::operator==):
921         (JSC::UString::toDouble):
922         * runtime/UString.h:
923         (JSC::CString::length):
924         (JSC::CString::data):
925
926 2010-03-25  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
927
928         Reviewed by nobody, build fix.
929
930         [Qt] Build fix on MSVC. Reverts r55633 for stdint.h
931
932         This file gets included in generated moc files which don't
933         include the prefix header.
934
935         * os-win32/stdint.h:
936
937 2010-03-24  Gavin Barraclough  <barraclough@apple.com>
938
939         Reviewed by NOBODY (windows build fix).
940
941 2010-03-24  Gavin Barraclough  <barraclough@apple.com>
942
943         Reviewed by Sam Weinig.
944
945         Switch String::latin1, String::utf8, String::fromUTF8 to
946         use WTF's Unicode conversion methods rather than TextEncoder.
947         These methods only perform simple conversion, and don't need
948         really require TextEncoder's full capability (to look up arbitrary
949         encodings by name), switching to only be dependent on WTF will
950         make it easier if we chose to move WebCore::String to WTF.
951
952         * JavaScriptCore.exp:
953
954 2010-03-24  Alexey Proskuryakov  <ap@apple.com>
955
956         Reviewed by Geoff Garen.
957
958         * wtf/FastMalloc.h: Added a using directive for fastMallocSize, like we do for all public
959         WTF symbols. Also sorted the list alphabetically.
960
961 2010-03-23  Gavin Barraclough  <barraclough@apple.com>
962
963         Reviewed by NOBODY (speculative windows build fix part II).
964
965 2010-03-23  Gavin Barraclough  <barraclough@apple.com>
966
967         Reviewed by NOBODY (speculative windows build fix).
968
969 2010-03-23  Gavin Barraclough  <barraclough@apple.com>
970
971         Reviewed by Oliver Hunt.
972
973         Bug 36519 - JSGlobalContextRelease is unnecessarily slow
974
975         Since [ http://trac.webkit.org/changeset/35917 ], calling
976         JSGlobalContextRelease always triggers a GC heap collection
977         (if not a full destroy). As per 35917's changelog "This is
978         only really necessary when the (JSGlobalObject's) last
979         reference is released, but there is no way to determine that,
980         and no harm in collecting slightly more often."
981         
982         Well, we now know of cases of API clients who are harmed by
983         the performance penalty of collecting too often, so it's time
984         to add a way to determine whether a call to JSGlobalContextRelease
985         is removing the last protect from it's global object.  If further
986         protects are retaining the global object (likely from other
987         JSGlobalContextRefs), then don't trigger a GC collection.
988
989         * API/JSContextRef.cpp:
990         * runtime/Collector.cpp:
991         (JSC::Heap::unprotect): return a boolean indicating that the value is now unprotected.
992         * runtime/Collector.h:
993         * wtf/HashCountedSet.h:
994         (WTF::::remove): return a boolean indicating whether the value was removed from the set.
995
996 2010-03-23  Mark Rowe  <mrowe@apple.com>
997
998         Build fix.
999
1000         * runtime/ArrayPrototype.cpp:
1001         (JSC::arrayProtoFuncSplice): Some versions of GCC emit a warning about the implicit 64- to 32-bit truncation
1002         that takes place here. An explicit cast is sufficient to silence it.
1003
1004 2010-03-23  Alexey Proskuryakov  <ap@apple.com>
1005
1006         Build fix.
1007
1008         * runtime/ArrayPrototype.cpp: (JSC::arrayProtoFuncSplice): Fixed a typo - length doesn't
1009         need to be converted with toInteger().
1010
1011 2010-03-23  Alexey Proskuryakov  <ap@apple.com>
1012
1013         Reviewed by Geoff Garen.
1014
1015         https://bugs.webkit.org/show_bug.cgi?id=36511
1016         <rdar://problem/7753498> Safari freezes when using SPUTNIK JavaScript conformance check
1017
1018         Test: fast/js/sputnik-S15.4.4.12_A3_T3.html
1019
1020         * runtime/ArrayPrototype.cpp: (JSC::arrayProtoFuncSplice): We were incorrectly computing
1021         the start offset, and iterated over (almost) all integers. Note that this can be fixed
1022         without using doubles, but the code would be much more complicated, and there is no important
1023         reason to stick to integers here.
1024
1025 2010-03-23  Kent Hansen  <kent.hansen@nokia.com>
1026
1027         Reviewed by Darin Adler.
1028
1029         Fix compilation on Itanium in 32-bit mode
1030         https://bugs.webkit.org/show_bug.cgi?id=36494
1031
1032         * wtf/Platform.h: Introduce CPU(IA64_32). Don't define
1033           WTF_USE_JSVALUE64 if the CPU is in 32-bit mode.
1034
1035 2010-03-23  Geoffrey Garen  <ggaren@apple.com>
1036
1037         Reviewed by Mark Rowe.
1038
1039         Interpreter fix for <rdar://problem/7728196> REGRESSION (r46701): -(-2147483648)
1040         evaluates to -2147483648 on 32 bit (35842)
1041
1042         * interpreter/Interpreter.cpp:
1043         (JSC::Interpreter::privateExecute): Only take the fast negate path if
1044         a bit other than bit 31 is set. If none of bits 0-30 are set, then the
1045         value we're negating can only be 0 or -2147483648, and neither can be
1046         negated in int space.
1047
1048         * jit/JITArithmetic.cpp:
1049         (JSC::JIT::emit_op_negate):
1050         (JSC::JIT::emitSlow_op_negate): Updated the JIT implementation to match
1051         the interpreter, since it's slightly simpler.
1052
1053 2010-03-22  Siddharth Mathur  <siddharth.mathur@nokia.com>
1054
1055         Reviewed by Laszlo Gombos.
1056
1057         [Symbian] More efficient aligned memory allocation for JSC Collector
1058         https://bugs.webkit.org/show_bug.cgi?id=34350
1059
1060         * JavaScriptCore.pri: Added 2 new Symbian source files and HAL linkage
1061
1062         * runtime/Collector.cpp: Reduced port-specific code and added private data member
1063         (JSC::Heap::Heap):
1064         (JSC::Heap::~Heap):
1065         (JSC::Heap::destroy):
1066         (JSC::Heap::allocateBlock):
1067         (JSC::Heap::freeBlockPtr):
1068
1069         * runtime/Collector.h: Added private data member
1070
1071         * wtf/symbian: Added.
1072         * wtf/symbian/BlockAllocatorSymbian.cpp: Added.
1073         (WTF::AlignedBlockAllocator::AlignedBlockAllocator): Helper class to allocate 
1074         aligned blocks more efficiently as required by Collector
1075         (WTF::AlignedBlockAllocator::alloc):
1076         (WTF::AlignedBlockAllocator::free):
1077         (WTF::AlignedBlockAllocator::destroy):
1078         (WTF::AlignedBlockAllocator::~AlignedBlockAllocator):
1079         * wtf/symbian/BlockAllocatorSymbian.h: Added.
1080
1081 2010-03-22  Geoffrey Garen  <ggaren@apple.com>
1082
1083         Reviewed by Sam Weinig.
1084
1085         Fixed <rdar://problem/7728196> REGRESSION (r46701): -(-2147483648)
1086         evaluates to -2147483648 on 32 bit (35842)
1087         
1088         Two ways to fix the same bug:
1089         
1090         1. Check for overflow when negating, since negating the largest negative
1091         int causes overflow.
1092         
1093         2. Constant-fold even when negating a negative, since, like they say in
1094         high school, "math works."
1095
1096         * assembler/MacroAssemblerARM.h:
1097         (JSC::MacroAssemblerARM::branchNeg32):
1098         * assembler/MacroAssemblerX86Common.h:
1099         (JSC::MacroAssemblerX86Common::branchNeg32): Added a branching version
1100         of the negate operator.
1101
1102         * jit/JITArithmetic.cpp:
1103         (JSC::JIT::emit_op_negate): Use the branching version of the negate 
1104         operator to check for overflow.
1105
1106         (JSC::JIT::emitSlow_op_negate): Link the check for overflow to a slow case.
1107         (We could emit inline code for this, since we know what the result would
1108         be, but that's probably just a waste of generated code.)
1109
1110         * parser/Grammar.y: Constant fold even when negating a negative.
1111
1112 2010-03-22  David Kilzer  <ddkilzer@apple.com>
1113
1114         <http://webkit.org/b/36431> Clean up 'int' use in UString.cpp after r54789
1115
1116         Reviewed by Darin Adler.
1117
1118         * runtime/UString.cpp:
1119         (JSC::UString::from): Changed argument type from 'unsigned int'
1120         to 'unsigned' to match WebKit coding style.
1121         (JSC::UString::find): Changed static_cast<int>() to
1122         static_cast<unsigned>() now that this method returns unsigned.
1123         (JSC::UString::rfind): Ditto.
1124         * runtime/UString.h:
1125         (JSC::UString::from): Changed argument type from 'unsigned int'
1126         to 'unsigned' to match WebKit coding style.
1127
1128 2010-03-22  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
1129
1130         Reviewed by Kenneth Rohde Christiansen.
1131
1132         Add support for syntax checking in the QtScript API.
1133
1134         New class was created; the QScriptSyntaxCheckResult which main
1135         responsibility is to provide results of the ECMA Script code
1136         syntax check. The class is not fully functional as the JSC C API
1137         doesn't expose an error column number, but it is a good start point
1138         for a future development.
1139
1140         [Qt] QtScript functionality should be extended by syntax checking.
1141         https://bugs.webkit.org/show_bug.cgi?id=36123
1142
1143         * qt/api/QtScript.pro:
1144         * qt/api/qscriptengine.cpp:
1145         (QScriptEngine::checkSyntax):
1146         * qt/api/qscriptengine.h:
1147         * qt/api/qscriptengine_p.cpp:
1148         (QScriptEnginePrivate::checkSyntax):
1149         * qt/api/qscriptengine_p.h:
1150         * qt/api/qscriptsyntaxcheckresult.cpp: Added.
1151         (QScriptSyntaxCheckResult::QScriptSyntaxCheckResult):
1152         (QScriptSyntaxCheckResult::~QScriptSyntaxCheckResult):
1153         (QScriptSyntaxCheckResult::operator=):
1154         (QScriptSyntaxCheckResult::state):
1155         (QScriptSyntaxCheckResult::errorLineNumber):
1156         (QScriptSyntaxCheckResult::errorColumnNumber):
1157         (QScriptSyntaxCheckResult::errorMessage):
1158         * qt/api/qscriptsyntaxcheckresult.h: Added.
1159         * qt/api/qscriptsyntaxcheckresult_p.cpp: Added.
1160         (QScriptSyntaxCheckResultPrivate::~QScriptSyntaxCheckResultPrivate):
1161         (QScriptSyntaxCheckResultPrivate::errorMessage):
1162         (QScriptSyntaxCheckResultPrivate::errorLineNumber):
1163         * qt/api/qscriptsyntaxcheckresult_p.h: Added.
1164         (QScriptSyntaxCheckResultPrivate::get):
1165         (QScriptSyntaxCheckResultPrivate::QScriptSyntaxCheckResultPrivate):
1166         (QScriptSyntaxCheckResultPrivate::state):
1167         (QScriptSyntaxCheckResultPrivate::errorColumnNumber):
1168         * qt/tests/qscriptengine/tst_qscriptengine.cpp:
1169         (tst_QScriptEngine::checkSyntax_data):
1170         (tst_QScriptEngine::checkSyntax):
1171
1172 2010-03-21  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
1173
1174         Reviewed by Simon Hausmann.
1175
1176         New class; QScriptProgram.
1177
1178         The class should be used to evaluate the same script multiple times
1179         more efficiently.
1180
1181         [Qt] QtScript should have QScriptProgram class
1182         https://bugs.webkit.org/show_bug.cgi?id=36008
1183
1184         * qt/api/QtScript.pro:
1185         * qt/api/qscriptengine.cpp:
1186         (QScriptEngine::evaluate):
1187         * qt/api/qscriptengine.h:
1188         * qt/api/qscriptengine_p.cpp:
1189         (QScriptEnginePrivate::evaluate):
1190         * qt/api/qscriptengine_p.h:
1191         (QScriptEnginePrivate::evaluate):
1192         * qt/api/qscriptprogram.cpp: Added.
1193         (QScriptProgram::QScriptProgram):
1194         (QScriptProgram::~QScriptProgram):
1195         (QScriptProgram::operator=):
1196         (QScriptProgram::isNull):
1197         (QScriptProgram::sourceCode):
1198         (QScriptProgram::fileName):
1199         (QScriptProgram::firstLineNumber):
1200         (QScriptProgram::operator==):
1201         (QScriptProgram::operator!=):
1202         * qt/api/qscriptprogram.h: Added.
1203         * qt/api/qscriptprogram_p.h: Added.
1204         (QScriptProgramPrivate::get):
1205         (QScriptProgramPrivate::QScriptProgramPrivate):
1206         (QScriptProgramPrivate::~QScriptProgramPrivate):
1207         (QScriptProgramPrivate::isNull):
1208         (QScriptProgramPrivate::sourceCode):
1209         (QScriptProgramPrivate::fileName):
1210         (QScriptProgramPrivate::firstLineNumber):
1211         (QScriptProgramPrivate::operator==):
1212         (QScriptProgramPrivate::operator!=):
1213         (QScriptProgramPrivate::program):
1214         (QScriptProgramPrivate::file):
1215         (QScriptProgramPrivate::line):
1216         * qt/tests/qscriptengine/tst_qscriptengine.cpp:
1217         (tst_QScriptEngine::evaluateProgram):
1218
1219 2010-03-21  David Kilzer  <ddkilzer@apple.com>
1220
1221         Blind attempt #2 to fix the Windows build after r56314
1222
1223         * API/tests/testapi.c: Include JSObjectRefPrivate.h for the new
1224         methods instead of declaring them locally (and non-extern).
1225         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1226         Backed out previous change.
1227
1228 2010-03-21  David Kilzer  <ddkilzer@apple.com>
1229
1230         Blind attempt to fix the Windows build after r56314
1231
1232         Try to fix the following errors on the Windows buildbot:
1233
1234             Linking...
1235             testapi.obj : error LNK2001: unresolved external symbol "bool __cdecl JSObjectSetPrivateProperty(struct OpaqueJSContext const *,struct OpaqueJSValue *,struct OpaqueJSString *,struct OpaqueJSValue const *)" (?JSObjectSetPrivateProperty@@YA_NPBUOpaqueJSContext@@PAUOpaqueJSValue@@PAUOpaqueJSString@@PBU2@@Z)
1236             testapi.obj : error LNK2001: unresolved external symbol "struct OpaqueJSValue const * __cdecl JSObjectGetPrivateProperty(struct OpaqueJSContext const *,struct OpaqueJSValue *,struct OpaqueJSString *)" (?JSObjectGetPrivateProperty@@YAPBUOpaqueJSValue@@PBUOpaqueJSContext@@PAU1@PAUOpaqueJSString@@@Z)
1237             C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\bin\testapi.exe : fatal error LNK1120: 2 unresolved externals
1238
1239         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Added
1240         missing symbols to be exported.
1241
1242 2010-03-21  Oliver Hunt  <oliver@apple.com>
1243
1244         Reviewed by Maciej Stachowiak.
1245
1246         Documentation fix for previous patch.
1247
1248         * API/JSObjectRefPrivate.h:
1249
1250 2010-03-20  Oliver Hunt  <oliver@apple.com>
1251
1252         Reviewed by Maciej Stachowiak.
1253
1254         JSC needs an API to allow custom objects to have aprivate GC-accessible properties
1255         https://bugs.webkit.org/show_bug.cgi?id=36420
1256
1257         Add new API methods to support "private" properties on custom
1258         objects.
1259
1260         * API/JSCallbackObject.h:
1261         (JSC::JSCallbackObjectData::JSCallbackObjectData):
1262         (JSC::JSCallbackObjectData::~JSCallbackObjectData):
1263         (JSC::JSCallbackObjectData::getPrivateProperty):
1264         (JSC::JSCallbackObjectData::setPrivateProperty):
1265         (JSC::JSCallbackObjectData::deletePrivateProperty):
1266         (JSC::JSCallbackObjectData::markChildren):
1267         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty):
1268         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty):
1269         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::deletePrivateProperty):
1270         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::markChildren):
1271         (JSC::JSCallbackObject::getPrivateProperty):
1272         (JSC::JSCallbackObject::setPrivateProperty):
1273         (JSC::JSCallbackObject::deletePrivateProperty):
1274         (JSC::JSCallbackObject::markChildren):
1275         * API/JSObjectRef.cpp:
1276         (JSObjectGetPrivateProperty):
1277         (JSObjectSetPrivateProperty):
1278         (JSObjectDeletePrivateProperty):
1279         * API/JSObjectRefPrivate.h: Added.
1280         * API/tests/testapi.c:
1281         (main):
1282         * JavaScriptCore.exp:
1283         * JavaScriptCore.xcodeproj/project.pbxproj:
1284
1285 2010-03-20  Kevin Ollivier  <kevino@theolliviers.com>
1286
1287         [wx] Build fixes after introduction of Brew files.
1288
1289         * wscript:
1290
1291 2010-03-18  Tom Callaway  <tcallawa@redhat.com>
1292
1293         Reviewed by Darin Adler.
1294
1295         Bug 35429: Fix compile on SPARC64
1296         https://bugs.webkit.org/show_bug.cgi?id=35429
1297
1298         * wtf/Platform.h: Set WTF_USE_JSVALUE64 for SPARC64
1299
1300 2010-03-18  Oliver Hunt  <oliver@apple.com>
1301
1302         Reviewed by Sam Weinig.
1303
1304         Add API to directly expose JSON parsing
1305         https://bugs.webkit.org/show_bug.cgi?id=34887
1306
1307         Add API to expose JSON parsing directly, and add tests to testapi
1308
1309         * API/JSValueRef.cpp:
1310         (JSValueMakeFromJSONString):
1311         (JSValueCreateJSONString):
1312         * API/tests/testapi.c:
1313         (main):
1314         * JavaScriptCore.exp:
1315         * runtime/JSONObject.cpp:
1316         (JSC::JSONStringify):
1317         * runtime/JSONObject.h:
1318
1319 2010-03-16  Sam Weinig  <sam@webkit.org>
1320
1321         Reviewed by Darin Adler and Mark Rowe.
1322
1323         Update WebKit availability macros for release after 4.0.
1324
1325         * API/WebKitAvailability.h:
1326
1327 2010-03-17  Oliver Hunt  <oliver@apple.com>
1328
1329         Reviewed by Gavin Barraclough.
1330
1331         undefined, NaN, and Infinity should be ReadOnly
1332         https://bugs.webkit.org/show_bug.cgi?id=36263
1333
1334         Simply add the ReadOnly flag to these properties.
1335
1336         * runtime/JSGlobalObject.cpp:
1337         (JSC::JSGlobalObject::reset):
1338
1339 2010-03-17  Darin Adler  <darin@apple.com>
1340
1341         Reviewed by Oliver Hunt.
1342
1343         Speed up Math.round a little by removing unneeded special case
1344         https://bugs.webkit.org/show_bug.cgi?id=36107
1345
1346         Test: fast/js/math.html
1347
1348         * runtime/MathObject.cpp:
1349         (JSC::mathProtoFuncRound): This function had a special case for numbers
1350         between -0.5 and -0.0 to return -0.0. But the algorithm in the function
1351         already yields -0.0 for those cases, so the extra checking and branching
1352         is unneeded.
1353
1354 2010-03-17  Mike Homey  <glandium@debian.org>
1355
1356         Reviewed by Gustavo Noronha.
1357
1358         Build fix for SPARC. Fix missing macro value.
1359
1360         * wtf/Platform.h:
1361
1362 2010-03-16  Gavin Barraclough  <barraclough@apple.com>
1363
1364         Reviewed by Oliver Hunt, Darin Adler.
1365
1366         Bug 36083 - REGRESSION (r55772-r55834): Crash in JavaScriptCore RegExp code on PowerPC
1367
1368         The problem is a bug in our port of PCRE - that a read may take place from the first character in an
1369         empty string.  For the time being, revert to using a valid pointer in the data segment rather than
1370         an invalid non-null pointer into the zero-page for the empty string's data pointer.  A better fix for
1371         this will be to remove PCRE.
1372
1373         * runtime/UStringImpl.cpp:
1374         (JSC::UStringImpl::empty):
1375
1376 2010-03-16  Darin Adler  <darin@apple.com>
1377
1378         Rolled out r56081 since it broke the Windows build.
1379
1380 2010-03-16  Zoltan Horvath  <zoltan@webkit.org>
1381
1382         Reviewed by Darin Adler.
1383
1384         Remove extra <new> include and add guards to operator new/delete definitions
1385         https://bugs.webkit.org/show_bug.cgi?id=35967
1386
1387         Remove extra <new> header include from FastAlloc.cpp since it is included in 
1388         FastAlloc.h. Add ENABLE(GLOBAL_FASTMALLOC_NEW) macro guard to operator
1389         new/delete/new []/delete [] definitions.
1390
1391         * wtf/FastMalloc.cpp:
1392
1393 2010-03-15  Kwang Yul Seo  <skyul@company100.net>
1394
1395         Reviewed by Eric Seidel.
1396
1397         [BREWMP] Add a function to create a BREW instance without local variable declarations.
1398         https://bugs.webkit.org/show_bug.cgi?id=34705
1399
1400         Add a template function to create a BREW instance in one line.
1401
1402         * wtf/brew/ShellBrew.h: Added.
1403         (WTF::createInstance):
1404
1405 2010-03-15  Geoffrey Garen  <ggaren@apple.com>
1406
1407         Not reviewed.
1408
1409         Removed a now-incorrect comment I forgot to remove in my last check-in.
1410
1411         * wtf/FastMalloc.cpp:
1412         (WTF::TCMalloc_PageHeap::scavenge):
1413
1414 2010-03-15  Geoffrey Garen  <ggaren@apple.com>
1415
1416         Reviewed by Sam Weinig.
1417
1418         Fixed a portion of:
1419         <rdar://problem/7165917> | https://bugs.webkit.org/show_bug.cgi?id=28676
1420         Safari 4 does not release memory back to the operating system fast enough (28676)
1421
1422         Every few seconds, release a percentage of the minimum unused page count
1423         during that time period.
1424
1425         SunSpider reports no change, command-line or in-browser, Mac or Windows.
1426         
1427         * wtf/FastMalloc.cpp:
1428         (WTF::TCMalloc_PageHeap::init):
1429         (WTF::TCMalloc_PageHeap::signalScavenger):
1430         (WTF::TCMalloc_PageHeap::initializeScavenger): Renamed shouldContinueScavenging
1431         to shouldScavenge, since scavenging is no longer something that we interrupt.
1432
1433         (WTF::TCMalloc_PageHeap::scavenge): The new scavenging algorithm. Fixes
1434         a bug where the old code would release only one item from each size class
1435         per scavenge, potentially leaving large numbers of large-sized objects
1436         unreleased for a long time.
1437
1438         (WTF::TCMalloc_PageHeap::shouldScavenge):
1439         (WTF::TCMalloc_PageHeap::New):
1440         (WTF::TCMalloc_PageHeap::AllocLarge):
1441         (WTF::TCMalloc_PageHeap::Delete):
1442         (WTF::TCMalloc_PageHeap::GrowHeap):
1443         (WTF::TCMalloc_PageHeap::scavengerThread):
1444         (WTF::TCMalloc_PageHeap::periodicScavenge): Updated to track the minimum
1445         value of free_committed_pages_ during a given scavenge period.
1446
1447 2010-03-15  Gavin Barraclough  <barraclough@apple.com>
1448
1449         Reviewed by Sam Weinig.
1450
1451         https://bugs.webkit.org/show_bug.cgi?id=35843
1452         Re-land reverted fix to JSString::getIndex()
1453
1454         Calling getIndex() on a JSString in rope form may result in a JSException being thrown
1455         if there is insuficient memory so value(exec) returns UString() with length zero,
1456         which will be passed to jsSingleCharacterSubstring.
1457         Add a slow case function to trap the error & return a safe null value, until the
1458         exception is handled.
1459
1460         * runtime/JSString.cpp:
1461         (JSC::JSString::getIndexSlowCase):
1462         (JSC::JSString::getStringPropertyDescriptor):
1463         * runtime/JSString.h:
1464         (JSC::jsSingleCharacterSubstring):
1465         (JSC::JSString::getIndex):
1466         (JSC::jsSingleCharacterString):
1467         (JSC::JSString::getStringPropertySlot):
1468
1469 2010-03-04  Kenneth Rohde Christiansen  <kenneth@webkit.org>
1470
1471         Reviewed by Adam Roben.
1472
1473         Add a long long version of abs() for MSVC.
1474
1475         * wtf/MathExtras.h:
1476         (abs):
1477
1478 2010-03-15  Gabor Loki  <loki@webkit.org>
1479
1480         Reviewed by Gavin Barraclough.
1481
1482         Combine ctiTrampolines on ARM and Thumb-2
1483         https://bugs.webkit.org/show_bug.cgi?id=36014
1484
1485         * jit/JITStubs.cpp:
1486         (JSC::JITThunks::JITThunks):
1487
1488 2010-03-12  Gavin Barraclough  <barraclough@apple.com>
1489
1490         Reviewed by NOBODY (build fix).
1491
1492         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1493
1494 2010-03-12  Gavin Barraclough  <barraclough@apple.com>
1495
1496         Reviewed by NOBODY (build fix).
1497
1498         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1499
1500 2010-03-11  Gavin Barraclough  <barraclough@apple.com>
1501
1502         Reviewed by Oliver Hunt.
1503
1504         Bug 36075 - Clean up screwyness re static string impls & Identifiers.
1505
1506         * API/JSClassRef.cpp:
1507         (OpaqueJSClass::~OpaqueJSClass): Classname may be null/empty, and these are an identifer.  This is okay, since the null/empty strings are shared across all threads.
1508         * JavaScriptCore.exp:
1509         * runtime/Identifier.cpp:
1510         (JSC::Identifier::add): No need to explicitly hash null reps, this is done in the ststic UStringImpl constructor.
1511         (JSC::Identifier::addSlowCase): UStringImpl::empty() handled & checkCurrentIdentifierTable now called in the header.
1512         (JSC::Identifier::checkCurrentIdentifierTable): Replaces checkSameIdentifierTable (this no longer checked the rep since the identifierTable pointer was removed from UString::Rep long ago).
1513         * runtime/Identifier.h:
1514         (JSC::Identifier::add): Replace call to checkSameIdentifierTable with call to checkCurrentIdentifierTable at head of function.
1515         * runtime/UStringImpl.cpp:
1516         (JSC::UStringImpl::~UStringImpl): Remove call to checkConsistency - this function no longer checks anything interesting.
1517         * runtime/UStringImpl.h:
1518         (JSC::UStringOrRopeImpl::UStringOrRopeImpl): Set s_refCountFlagIsIdentifier in static constructor.
1519         (JSC::UStringImpl::UStringImpl): remove calls to checkConsistency (see above), add new ASSERT to substring constructor.
1520         (JSC::UStringImpl::setHash): ASSERT not static (static strings set the hash in their constructor, should not reach this code path).
1521         (JSC::UStringImpl::create): Add missing ASSERT.
1522         (JSC::UStringImpl::setIsIdentifier): ASSERT !isStatic() (static strings hash set in constructor).
1523
1524 2010-03-12  Peter Varga  <pvarga@inf.u-szeged.hu>
1525
1526         Reviewed by David Levin.
1527
1528         Two functions tryConsumeCharacter() and tryConsumeCharacterClass() are
1529         removed from yarr/RegexInterpreter.cpp because they are never called.
1530
1531         * yarr/RegexInterpreter.cpp:
1532
1533 2010-03-11  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
1534
1535         Reviewed by Simon Hausmann.
1536
1537         The JSNative state was renamed to JSPrimitive. The new name better
1538         coresponds to the ECMAScript standard.
1539
1540         Enum QScriptValuePrivate::States was renamed to State to obey Qt
1541         coding style rules ("States" name suggests that a state could
1542         mixed together with an other state using bitwise logic operators.
1543
1544         [Qt] QScriptValuePrivate::States has naming issues
1545         https://bugs.webkit.org/show_bug.cgi?id=35968
1546
1547         * qt/api/qscriptvalue_p.h:
1548         (QScriptValuePrivate::):
1549         (QScriptValuePrivate::QScriptValuePrivate):
1550         (QScriptValuePrivate::isBool):
1551         (QScriptValuePrivate::isNumber):
1552         (QScriptValuePrivate::isNull):
1553         (QScriptValuePrivate::isString):
1554         (QScriptValuePrivate::isUndefined):
1555         (QScriptValuePrivate::toString):
1556         (QScriptValuePrivate::toNumber):
1557         (QScriptValuePrivate::toBool):
1558         (QScriptValuePrivate::assignEngine):
1559         (QScriptValuePrivate::refinedJSValue):
1560
1561 2010-03-11  Gavin Barraclough  <barraclough@apple.com>
1562
1563         Reviewed by NOBODY (Windows build fix).
1564
1565         Add export.
1566
1567         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1568
1569 2010-03-11  Gavin Barraclough  <barraclough@apple.com>
1570
1571         Reviewed by NOBODY (Windows build fix).
1572
1573         Add export.
1574
1575         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1576
1577 2010-03-11  Gavin Barraclough  <barraclough@apple.com>
1578
1579         Rubber stamped by Oliver Hunt.
1580
1581         Remove nonsense comments used in development & commited in error.
1582
1583         * runtime/UStringImpl.h:
1584
1585 2010-03-11  Gavin Barraclough  <barraclough@apple.com>
1586
1587         Reviewed by NOBODY (Windows build fix).
1588
1589         Remove export.
1590
1591         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1592
1593 2010-03-11  Gavin Barraclough  <barraclough@apple.com>
1594
1595         Reviewed by Oliver Hunt.
1596
1597         https://bugs.webkit.org/show_bug.cgi?id=36041
1598         Remove unnecessary differences in common code between WebCore::StringImpl & JSC::UStringImpl
1599
1600         Much of the code in WebCore::StringImpl and JSC::UStringImpl is now very similar,
1601         but has trivial and unnecessary formatting differences, such as the exact wording
1602         of comments, missing ASSERTs, functions implemented in the .h vs .cpp etc.
1603
1604         * runtime/Identifier.cpp:
1605         (JSC::Identifier::add): UStringImpl::empty() now automatically hashes, uas per WebCore strings.
1606         (JSC::Identifier::addSlowCase): UStringImpl::empty() now automatically hashes, uas per WebCore strings.
1607         * runtime/UStringImpl.cpp:
1608         (JSC::UStringImpl::~UStringImpl): Only call bufferOwnership() once, add missing ASSERTs.
1609         (JSC::UStringImpl::createUninitialized): Move from .h, not commonly called, no need to inline.
1610         (JSC::UStringImpl::create): Move from .h, not commonly called, no need to inline.
1611         (JSC::UStringImpl::sharedBuffer): Rewritten to more closely match WebCore implementation, remove need for separate baseSharedBuffer() method.
1612         * runtime/UStringImpl.h:
1613         (JSC::UStringImpl::UStringImpl): Automatically hash static strings, ASSERT m_data & m_length are non-null/non-zero in non-static strings.
1614         (JSC::UStringImpl::setHash): Add missing ASSERT.
1615         (JSC::UStringImpl::create): Moved to .cpp / added missing check for empty string creation.
1616         (JSC::UStringImpl::adopt): Vector.size() returns size_t, not unsigned.
1617         (JSC::UStringImpl::cost): Renamed m_bufferSubstring -> m_substringBuffer
1618         (JSC::UStringImpl::hash): Reordered in file.
1619         (JSC::UStringImpl::existingHash): Reordered in file.
1620         (JSC::UStringImpl::computeHash): Reordered in file, renamed parameter.
1621         (JSC::UStringImpl::checkConsistency): rewrote ASSERT.
1622         (JSC::UStringImpl::bufferOwnership): Return type should be BufferOwnership.
1623         (JSC::UStringImpl::): Moved friends to head of class.
1624
1625 2010-03-11  Mark Rowe  <mrowe@apple.com>
1626
1627         Reviewed by David Kilzer.
1628
1629         <rdar://problem/7745082> Make it possible to build WebKit for older Mac OS X versions from the current Mac OS X version
1630
1631         Default to using the appropriate SDK if the target Mac OS X version is not the current Mac OS X version.
1632
1633         * Configurations/Base.xcconfig:
1634
1635 2010-03-11  Mark Rowe  <mrowe@apple.com>
1636
1637         Reviewed by Tim Hatcher.
1638
1639         <rdar://problem/7745082> Make it possible to build WebKit for older Mac OS X versions from the current Mac OS X version
1640
1641         Introduce TARGET_MAC_OS_X_VERSION_MAJOR to represent the Mac OS X version that is being targeted.  It defaults to the
1642         current Mac OS X version unless otherwise specified.
1643
1644         Key off TARGET_MAC_OS_X_VERSION_MAJOR where we'd previously been keying off MAC_OS_X_VERSION_MAJOR.
1645
1646         Explicitly map from the target Mac OS X version to the preferred compiler since Xcode's default compiler choice
1647         may not be usable when targetting a different Mac OS X version.
1648
1649         Key off TARGET_GCC_VERSION rather than MAC_OS_X_VERSION_MAJOR in locations where we'd previously been keying off
1650         MAC_OS_X_VERSION_MAJOR but the decision is really related to the compiler version being used.
1651
1652         * Configurations/Base.xcconfig:
1653         * Configurations/DebugRelease.xcconfig:
1654         * Configurations/FeatureDefines.xcconfig:
1655         * Configurations/JavaScriptCore.xcconfig:
1656         * Configurations/Version.xcconfig:
1657
1658 2010-03-11  Simon Fraser  <simon.fraser@apple.com>
1659
1660         Reviewed by Mark Rowe.
1661
1662         Sort the project file.
1663
1664         * JavaScriptCore.xcodeproj/project.pbxproj:
1665
1666 2010-03-11  Simon Fraser  <simon.fraser@apple.com>
1667
1668         Reviewed by Mark Rowe.
1669
1670         Sort the project file .
1671
1672         * JavaScriptCore.xcodeproj/project.pbxproj:
1673
1674 2010-03-11  Gabor Loki  <loki@webkit.org>
1675
1676         Reviewed by Gavin Barraclough.
1677
1678         Buildfix for Thumb-2 after r55684. Add branch8 and branchTest8 functions.
1679         https://bugs.webkit.org/show_bug.cgi?id=35892
1680
1681         * assembler/ARMv7Assembler.h:
1682         (JSC::ARMv7Assembler::):
1683         (JSC::ARMv7Assembler::ldrb):
1684         * assembler/MacroAssemblerARMv7.h:
1685         (JSC::MacroAssemblerARMv7::load8):
1686         (JSC::MacroAssemblerARMv7::branch8):
1687         (JSC::MacroAssemblerARMv7::branchTest8):
1688         (JSC::MacroAssemblerARMv7::setTest8):
1689
1690 2010-03-10  Gavin Barraclough  <barraclough@apple.com>
1691
1692         Rubber stamped by Oliver Hunt.
1693         
1694         Rename JSC::UStringImpl::data() to characters(), to match WebCore::StringImpl.
1695
1696         * API/JSClassRef.cpp:
1697         (OpaqueJSClassContextData::OpaqueJSClassContextData):
1698         * bytecompiler/BytecodeGenerator.cpp:
1699         (JSC::keyForCharacterSwitch):
1700         * bytecompiler/NodesCodegen.cpp:
1701         (JSC::processClauseList):
1702         * interpreter/Interpreter.cpp:
1703         (JSC::Interpreter::privateExecute):
1704         * jit/JITStubs.cpp:
1705         (JSC::DEFINE_STUB_FUNCTION):
1706         * runtime/ArrayPrototype.cpp:
1707         (JSC::arrayProtoFuncToString):
1708         * runtime/Identifier.cpp:
1709         (JSC::Identifier::equal):
1710         (JSC::Identifier::addSlowCase):
1711         * runtime/JSString.cpp:
1712         (JSC::JSString::resolveRope):
1713         * runtime/UString.cpp:
1714         (JSC::UString::toStrictUInt32):
1715         (JSC::equal):
1716         * runtime/UString.h:
1717         (JSC::UString::data):
1718         * runtime/UStringImpl.h:
1719         (JSC::UStringImpl::characters):
1720         (JSC::UStringImpl::hash):
1721         (JSC::UStringImpl::setHash):
1722
1723 2010-03-10  Gavin Barraclough  <barraclough@apple.com>
1724
1725         Reviewed by Darin Adler, Geoffrey Garen, Maciej Stachowiak.
1726
1727         https://bugs.webkit.org/show_bug.cgi?id=35991
1728         Would be faster to not use a thread specific to implement StringImpl::empty()
1729
1730         Change JSC::UStringImpl's implementation of empty() match to match StringImpl's new implementation
1731         (use a static defined within the empty() method), and change the interface to match too (return
1732         a pointer not a reference). 
1733
1734         ~0% performance impact (possible minor progression from moving empty() from .h to .cpp).
1735
1736         * JavaScriptCore.exp:
1737         * runtime/Identifier.cpp:
1738         (JSC::Identifier::add):
1739         (JSC::Identifier::addSlowCase):
1740         * runtime/PropertyNameArray.cpp:
1741         (JSC::PropertyNameArray::add):
1742         * runtime/UString.cpp:
1743         (JSC::initializeUString):
1744         (JSC::UString::UString):
1745         * runtime/UStringImpl.cpp:
1746         (JSC::UStringImpl::empty):
1747         (JSC::UStringImpl::create):
1748         * runtime/UStringImpl.h:
1749         (JSC::UStringImpl::adopt):
1750         (JSC::UStringImpl::createUninitialized):
1751         (JSC::UStringImpl::tryCreateUninitialized):
1752
1753 2010-03-10  Dmitry Titov  <dimich@chromium.org>
1754
1755         Not reviewed, fixing Snow Leopard build.
1756
1757         * wtf/mac/MainThreadMac.mm: Forgot 'static' for a new local function.
1758         (WTF::postTimer):
1759
1760 2010-03-10  Dmitry Titov  <dimich@chromium.org>
1761
1762         Reviewed by Darin Adler.
1763
1764         Make Document::postTask to use a single queue of tasks, to fire them in order
1765         https://bugs.webkit.org/show_bug.cgi?id=35943
1766
1767         The patch uses CFRunLoopTimer to schedule execution of tasks instead of performSelectorOnMainThread which apparently can starve other event sources.
1768         The timer is used when the schedule request is coming on the main thread itself. This happens when the task is posted on the main thread or
1769         when too many tasks are posted and the queue does 'stop and re-schedule' to make sure run loop has a chance to execute other events.
1770
1771         * wtf/mac/MainThreadMac.mm:
1772         (WTF::timerFired):
1773         (WTF::postTimer):
1774         (WTF::scheduleDispatchFunctionsOnMainThread): Use timer posted to the current RunLoop if scheduling the task execution while on the main thread.
1775
1776 2010-03-10  Geoffrey Garen  <ggaren@apple.com>
1777
1778         Windows build fix: added new symbol.
1779
1780         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1781
1782 2010-03-10  Geoffrey Garen  <ggaren@apple.com>
1783
1784         Windows build fix: removed old symbol.
1785
1786         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1787
1788 2010-03-09  Geoffrey Garen  <ggaren@apple.com>
1789
1790         Reviewed by Alexey Proskuryakov, Darin Adler, and Sam Weinig.
1791
1792         Refactored fastCheckConsistency to match some review comments:
1793             - renamed fastCheckConsistency to fastMallocSize, and changed ValueCheck
1794               to ASSERT that a pointer's fastMallocSize is not 0.
1795             - implemented a version of fastMallocSize for tcmalloc.
1796             
1797         Also moved some pre-existing code around to avoid a problem related to
1798         mismatched #define/#undef of malloc/free in this source file.
1799
1800         * JavaScriptCore.exp:
1801         * wtf/FastMalloc.cpp:
1802         (WTF::fastMallocSize): Renamed. Fixed indentation.
1803
1804         (WTF::TCMalloc_PageHeap::scavenge): Removed an incorrect ASSERT that
1805         got in the way of testing the tcmalloc implementation. (More information
1806         on why this ASSERT is incorrect is in <rdar://problem/7165917>.)
1807
1808         (WTF::TCMallocStats::fastMallocSize): Implemented for tcmalloc.
1809
1810         * wtf/FastMalloc.h: Updated for rename.
1811
1812         * wtf/ValueCheck.h:
1813         (WTF::): Moved the ASSERT that used to be in fastCheckConsistency here.
1814
1815 2010-03-10  Kevin Ollivier  <kevino@theolliviers.com>
1816
1817         Reviewed by Eric Seidel.
1818
1819         Make global new/delete operators configurable for all ports and disable it
1820         for the wx port for now.
1821
1822         * wtf/FastMalloc.h:
1823         * wtf/Platform.h:
1824
1825 2010-03-09  Gavin Barraclough  <barraclough@apple.com>
1826
1827         Reviewed by NOBODY (reverting r54510).
1828
1829         This caused a performance regression, by breaking the code
1830         generator's logic to calculate the skip level for resolving
1831         variables (traced by rdar:7683350)  Reverting for now.
1832
1833         * parser/Grammar.y:
1834         * parser/NodeConstructors.h:
1835         (JSC::ContinueNode::ContinueNode):
1836         (JSC::BreakNode::BreakNode):
1837         (JSC::ForInNode::ForInNode):
1838         * runtime/CommonIdentifiers.cpp:
1839         (JSC::CommonIdentifiers::CommonIdentifiers):
1840         * runtime/CommonIdentifiers.h:
1841         * runtime/FunctionPrototype.cpp:
1842         (JSC::FunctionPrototype::FunctionPrototype):
1843         * runtime/Identifier.cpp:
1844         (JSC::Identifier::add):
1845         * runtime/PropertyNameArray.cpp:
1846         (JSC::PropertyNameArray::add):
1847
1848 2010-03-09  Geoffrey Garen  <ggaren@apple.com>
1849
1850         Reviewed by Darin Adler.
1851
1852         Changed FastMalloc statistics reporting to be a bit clearer. We now
1853         report:
1854             - Reserved VM Bytes: the VM that has been mapped into the process.
1855             - Committed VM Bytes: the subset of Reserved VM Bytes actually in use.
1856             - Free List Bytes: the subset of Committed VM Bytes in a free list.
1857
1858         * wtf/FastMalloc.cpp:
1859         (WTF::fastMallocStatistics):
1860         (WTF::TCMallocStats::fastMallocStatistics): Updated to report the statistics
1861         above. Standardized use of "ifdef WTF_CHANGES". Added a SpinLockHolder
1862         around all statistics gathering, since it reads from the page heap.
1863
1864         * wtf/FastMalloc.h: Updated to report the statistics above. 
1865
1866 2010-03-09  Gabor Loki  <loki@webkit.org>
1867
1868         Rubber-stamped by Maciej Stachowiak.
1869
1870         Buildfix for ARM after r55684. Add branch8 and branchTest8 functions.
1871         https://bugs.webkit.org/show_bug.cgi?id=35892
1872
1873         * assembler/ARMAssembler.cpp:
1874         (JSC::ARMAssembler::dataTransfer32):
1875         * assembler/ARMAssembler.h:
1876         (JSC::ARMAssembler::):
1877         * assembler/MacroAssemblerARM.h:
1878         (JSC::MacroAssemblerARM::load8):
1879         (JSC::MacroAssemblerARM::branch8):
1880         (JSC::MacroAssemblerARM::branchTest8):
1881
1882 2010-03-08  Geoffrey Garen  <ggaren@apple.com>
1883
1884         Windows build fix: 'P' is not a type. Luckily, 'void' is.
1885
1886         * wtf/FastMalloc.cpp:
1887         (WTF::fastCheckConsistency):
1888
1889 2010-03-08  Geoffrey Garen  <ggaren@apple.com>
1890
1891         Windows build fix: export a new symbol.
1892
1893         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1894
1895 2010-03-08  Geoffrey Garen  <ggaren@apple.com>
1896
1897         Reviewed by Maciej Stachowiak.
1898
1899         Switching malloc implementations requires a world rebuild
1900         https://bugs.webkit.org/show_bug.cgi?id=35899
1901
1902         * wtf/FastMalloc.cpp:
1903         (WTF::fastCheckConsistency):
1904         (WTF::TCMallocStats::fastCheckConsistency):
1905         * wtf/FastMalloc.h:
1906         * wtf/ValueCheck.h:
1907         (WTF::): Moved pointer checking into a helper function in FastMalloc.cpp,
1908         so you can switch malloc implementations without rebuilding the world.
1909
1910 2010-03-07  Oliver Hunt  <oliver@apple.com>
1911
1912         Reviewed by Darin Adler.
1913
1914         TypeInfo is unnecessarily large
1915         https://bugs.webkit.org/show_bug.cgi?id=35850
1916
1917         Reduce the size of the type and flags members to a single
1918         byte each, reducing the size of Structure by 8 bytes.
1919
1920         * assembler/MacroAssemblerX86Common.h:
1921         (JSC::MacroAssemblerX86Common::branch8):
1922         (JSC::MacroAssemblerX86Common::branchTest8):
1923         (JSC::MacroAssemblerX86Common::setTest8):
1924           Add single byte branches, and correct setTest8 to do a
1925           single byte read from memory, and actually store the result
1926         * assembler/X86Assembler.h:
1927         (JSC::X86Assembler::):
1928         (JSC::X86Assembler::cmpb_im):
1929         (JSC::X86Assembler::testb_im):
1930         * jit/JITCall.cpp:
1931         (JSC::JIT::emit_op_construct_verify):
1932         * jit/JITOpcodes.cpp:
1933         (JSC::JIT::emit_op_instanceof):
1934         (JSC::JIT::emit_op_jeq_null):
1935         (JSC::JIT::emit_op_jneq_null):
1936         (JSC::JIT::emit_op_get_pnames):
1937         (JSC::JIT::emit_op_convert_this):
1938         (JSC::JIT::emit_op_construct_verify):
1939         (JSC::JIT::emit_op_to_jsnumber):
1940         (JSC::JIT::emit_op_eq_null):
1941         (JSC::JIT::emit_op_neq_null):
1942         * runtime/JSTypeInfo.h:
1943         (JSC::TypeInfo::TypeInfo):
1944         (JSC::TypeInfo::type):
1945
1946 2010-03-08  Gavin Barraclough  <barraclough@apple.com>
1947
1948         Reviewed by NOBODY (reverting regression).
1949
1950         Reverting 55035, this caused a regression.
1951         (https://bugs.webkit.org/show_bug.cgi?id=35843)
1952
1953         * runtime/JSString.cpp:
1954         (JSC::JSString::resolveRope):
1955         (JSC::JSString::getStringPropertyDescriptor):
1956         * runtime/JSString.h:
1957         (JSC::jsSingleCharacterSubstring):
1958         (JSC::JSString::getIndex):
1959         (JSC::JSString::getStringPropertySlot):
1960         * runtime/UStringImpl.cpp:
1961         * runtime/UStringImpl.h:
1962
1963 2010-03-08  Stuart Morgan  <stuartmorgan@chromium.org>
1964
1965         Reviewed by Darin Adler.
1966
1967         Added a new USE definition for secure text mode on the Mac.
1968         https://bugs.webkit.org/show_bug.cgi?id=31265
1969
1970         * wtf/Platform.h:
1971
1972 2010-03-08  Jian Li  <jianli@chromium.org>
1973
1974         Reviewed by Dmitry Titov.
1975
1976         Blob.slice support.
1977         https://bugs.webkit.org/show_bug.cgi?id=32993
1978
1979         Add ENABLE_BLOB_SLICE feature define.
1980         Also fix a problem that JSValue.toInteger is not exposed on Windows.
1981
1982         * Configurations/FeatureDefines.xcconfig:
1983         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1984
1985 2010-03-07  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
1986
1987         Reviewed by Simon Hausmann.
1988
1989         Small performance fix in the QScriptConverter::toString().
1990
1991         The QByteArray was replaced by the QVarLengthArray which doesn't
1992         have to allocate any memory on heap.
1993
1994         [Qt] QScriptConverter::toString() should use QVarLengthArray instead of QByteArray
1995         https://bugs.webkit.org/show_bug.cgi?id=35577
1996
1997         * qt/api/qscriptconverter_p.h:
1998         (QScriptConverter::toString):
1999
2000 2010-03-06  Mark Rowe  <mrowe@apple.com>
2001
2002         Rubber-stamped by Sam Weinig.
2003
2004         Remove unnecessary includes of wtf/Platform.h.  This is already pulled in by config.h.
2005
2006         * API/APICast.h:
2007         * API/JSCallbackFunction.cpp:
2008         * API/JSContextRef.cpp:
2009         * API/JSObjectRef.cpp:
2010         * API/JSValueRef.cpp:
2011         * assembler/ARMAssembler.h:
2012         * assembler/ARMv7Assembler.h:
2013         * assembler/AbstractMacroAssembler.h:
2014         * assembler/AssemblerBuffer.h:
2015         * assembler/AssemblerBufferWithConstantPool.h:
2016         * assembler/CodeLocation.h:
2017         * assembler/LinkBuffer.h:
2018         * assembler/MIPSAssembler.h:
2019         * assembler/MacroAssembler.h:
2020         * assembler/MacroAssemblerARM.h:
2021         * assembler/MacroAssemblerARMv7.h:
2022         * assembler/MacroAssemblerCodeRef.h:
2023         * assembler/MacroAssemblerMIPS.h:
2024         * assembler/MacroAssemblerX86.h:
2025         * assembler/MacroAssemblerX86Common.h:
2026         * assembler/MacroAssemblerX86_64.h:
2027         * assembler/RepatchBuffer.h:
2028         * assembler/X86Assembler.h:
2029         * jit/JIT.h:
2030         * jit/JITCode.h:
2031         * jit/JITInlineMethods.h:
2032         * jit/JITStubs.h:
2033         * os-win32/stdint.h:
2034         * runtime/JSAPIValueWrapper.h:
2035         * runtime/JSImmediate.h:
2036         * wtf/ASCIICType.h:
2037         * wtf/StdLibExtras.h:
2038         * wtf/VMTags.h:
2039         * yarr/RegexCompiler.h:
2040         * yarr/RegexInterpreter.h:
2041         * yarr/RegexJIT.h:
2042         * yarr/RegexParser.h:
2043         * yarr/RegexPattern.h:
2044
2045 2010-03-06  Kwang Yul Seo  <skyul@company100.net>
2046
2047         Reviewed by Eric Seidel.
2048
2049         [BREWMP] Share OwnPtr.
2050         https://bugs.webkit.org/show_bug.cgi?id=35776
2051
2052         Share OwnPtr implementation with BREW MP and remove OwnPtrBrew.
2053
2054         * wtf/OwnPtrBrew.cpp: Added.
2055         (WTF::deleteOwnedPtr):
2056         * wtf/OwnPtrCommon.h:
2057         * wtf/brew/OwnPtrBrew.cpp: Removed.
2058         * wtf/brew/OwnPtrBrew.h: Removed.
2059
2060 2010-03-06  Patrick Gansterer  <paroga@paroga.com>
2061
2062         Reviewed by Eric Seidel.
2063
2064         Implemented JIT_OPTIMIZE_NATIVE_CALL for WinCE
2065         https://bugs.webkit.org/show_bug.cgi?id=33426
2066
2067         * jit/JITOpcodes.cpp:
2068         (JSC::JIT::privateCompileCTIMachineTrampolines):
2069
2070 2010-03-05  Oliver Hunt  <oliver@apple.com>
2071
2072         Reviewed by NOBODY (build fix).
2073
2074         Add enw exports to windows
2075
2076         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2077
2078 2010-03-05  Oliver Hunt  <oliver@apple.com>
2079
2080         Reviewed by Gavin Barraclough.
2081
2082         JSC should cache int to Identifier conversion as it does for ordinary strings
2083         https://bugs.webkit.org/show_bug.cgi?id=35814
2084
2085         Make the NumericStrings cache cache unsigned ints in addition to signed.
2086         We keep them separate from the int cache as it both simplifies code, and
2087         also because the unsigned path is exclusive to property access and therefore
2088         seems to have different usage patterns.
2089
2090         The primary trigger for the unsigned to Identifier propertyName conversion
2091         is the construction of array-like objects out of normal objects.  Given these
2092         tend to be relative small numbers, and the array-like behaviour lends itself
2093         to sequential values this patch also adds a non-colliding cache for all small
2094         numbers.
2095
2096         * JavaScriptCore.exp:
2097         * runtime/Identifier.cpp:
2098         (JSC::Identifier::from):
2099         * runtime/Identifier.h:
2100         * runtime/NumericStrings.h:
2101         (JSC::NumericStrings::add):
2102         (JSC::NumericStrings::lookup):
2103         (JSC::NumericStrings::lookupSmallString):
2104
2105 2010-03-03  Oliver Hunt  <oliver@apple.com>
2106
2107         Reviewed by Gavin Barraclough.
2108
2109         Allow static property getters to interact with JSCs caching
2110         https://bugs.webkit.org/show_bug.cgi?id=35716
2111
2112         Add new opcodes for handling cached lookup of static value getters.
2113         More or less the same as with JS getters, all that changes is that
2114         instead of calling through a JSFunction we always know that we have
2115         a C function to call.
2116
2117         For the patching routines in the JIT we now need to pass a few
2118         new parameters to allow us to pass enough information to the stub
2119         function to allow us to call the C function correctly.  Logically
2120         this shouldn't actually be necessary as all of these functions ignore
2121         the identifier, but removing the ident parameter would require
2122         somewhat involved changes to the way we implement getOwnPropertySlot,
2123         etc.
2124
2125         * bytecode/CodeBlock.cpp:
2126         (JSC::CodeBlock::dump):
2127         (JSC::CodeBlock::derefStructures):
2128         (JSC::CodeBlock::refStructures):
2129         * bytecode/Instruction.h:
2130         (JSC::Instruction::Instruction):
2131         (JSC::Instruction::):
2132         * bytecode/Opcode.h:
2133         * interpreter/Interpreter.cpp:
2134         (JSC::Interpreter::tryCacheGetByID):
2135         (JSC::Interpreter::privateExecute):
2136         * jit/JIT.cpp:
2137         (JSC::JIT::privateCompileMainPass):
2138         * jit/JIT.h:
2139         (JSC::JIT::compileGetByIdProto):
2140         (JSC::JIT::compileGetByIdSelfList):
2141         (JSC::JIT::compileGetByIdProtoList):
2142         (JSC::JIT::compileGetByIdChainList):
2143         (JSC::JIT::compileGetByIdChain):
2144         * jit/JITPropertyAccess.cpp:
2145         (JSC::JIT::privateCompileGetByIdProto):
2146         (JSC::JIT::privateCompileGetByIdSelfList):
2147         (JSC::JIT::privateCompileGetByIdProtoList):
2148         (JSC::JIT::privateCompileGetByIdChainList):
2149         (JSC::JIT::privateCompileGetByIdChain):
2150         * jit/JITPropertyAccess32_64.cpp:
2151         (JSC::JIT::privateCompileGetByIdProto):
2152         (JSC::JIT::privateCompileGetByIdSelfList):
2153         (JSC::JIT::privateCompileGetByIdProtoList):
2154         (JSC::JIT::privateCompileGetByIdChainList):
2155         (JSC::JIT::privateCompileGetByIdChain):
2156         * jit/JITStubs.cpp:
2157         (JSC::JITThunks::tryCacheGetByID):
2158         (JSC::DEFINE_STUB_FUNCTION):
2159         * jit/JITStubs.h:
2160         (JSC::):
2161         * runtime/JSFunction.cpp:
2162         (JSC::JSFunction::getOwnPropertySlot):
2163         * runtime/Lookup.h:
2164         (JSC::getStaticPropertySlot):
2165         (JSC::getStaticValueSlot):
2166         * runtime/PropertySlot.h:
2167         (JSC::PropertySlot::):
2168         (JSC::PropertySlot::PropertySlot):
2169         (JSC::PropertySlot::cachedPropertyType):
2170         (JSC::PropertySlot::isCacheable):
2171         (JSC::PropertySlot::isCacheableValue):
2172         (JSC::PropertySlot::setValueSlot):
2173         (JSC::PropertySlot::setCacheableCustom):
2174         (JSC::PropertySlot::setGetterSlot):
2175         (JSC::PropertySlot::setCacheableGetterSlot):
2176         (JSC::PropertySlot::clearOffset):
2177         (JSC::PropertySlot::customGetter):
2178
2179 2010-03-04  Shinichiro Hamaji  <hamaji@chromium.org>
2180
2181         Unreviewed. Remove a non-ASCII character introduced in the following bug.
2182
2183         put_by_id does will incorrectly cache writes where a specific value exists, where at the point of caching the same value is being written.
2184         https://bugs.webkit.org/show_bug.cgi?id=35537
2185
2186         * runtime/JSObject.h:
2187         (JSC::JSObject::putDirectInternal):
2188
2189 2010-03-04  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
2190
2191         Reviewed by Tor Arne Vestbø.
2192
2193         [Qt] Make the OUTPUT_DIR variable in qmake projects independent of build-webkit's logic.
2194
2195         This also allows shadow builds relying only on qmake to work properly.
2196         * jsc.pro:
2197         * qt/api/QtScript.pro:
2198         * qt/tests/qscriptengine/qscriptengine.pro:
2199         * qt/tests/qscriptvalue/qscriptvalue.pro:
2200         * qt/tests/tests.pri:
2201
2202 2010-03-03  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
2203
2204         Reviewed by Simon Hausmann.
2205
2206         QScriptValue::isObject fix.
2207
2208         Fix broken internal state evaluation from JSValue to JSNative / JSObject.
2209         New function was introduced which should take care about promoting
2210         JSValue state inside QScriptValuePrivate. It should be used instead of a
2211         direct JSC C API call.
2212
2213         The bug exposed a weakness in autotest suite, as the QScriptValuePrivate
2214         is based on state machine with lazy state evaluation, there is a possibility
2215         that serial sequencial calls to the same public const function could return
2216         different results. The patch fix the issue.
2217
2218         [Qt] Sometimes QScriptValue::isObject returns an incorrect value
2219         https://bugs.webkit.org/show_bug.cgi?id=35387
2220
2221         * qt/api/qscriptvalue_p.h:
2222         (QScriptValuePrivate::isBool):
2223         (QScriptValuePrivate::isNumber):
2224         (QScriptValuePrivate::isNull):
2225         (QScriptValuePrivate::isString):
2226         (QScriptValuePrivate::isUndefined):
2227         (QScriptValuePrivate::isError):
2228         (QScriptValuePrivate::isObject):
2229         (QScriptValuePrivate::isFunction):
2230         (QScriptValuePrivate::call):
2231         (QScriptValuePrivate::refineJSValue):
2232         * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp:
2233         (tst_QScriptValue::initScriptValues):
2234         (tst_QScriptValue::isValid_makeData):
2235         (tst_QScriptValue::isValid_test):
2236         (tst_QScriptValue::isBool_makeData):
2237         (tst_QScriptValue::isBool_test):
2238         (tst_QScriptValue::isBoolean_makeData):
2239         (tst_QScriptValue::isBoolean_test):
2240         (tst_QScriptValue::isNumber_makeData):
2241         (tst_QScriptValue::isNumber_test):
2242         (tst_QScriptValue::isFunction_test):
2243         (tst_QScriptValue::isNull_makeData):
2244         (tst_QScriptValue::isNull_test):
2245         (tst_QScriptValue::isString_makeData):
2246         (tst_QScriptValue::isString_test):
2247         (tst_QScriptValue::isUndefined_makeData):
2248         (tst_QScriptValue::isUndefined_test):
2249         (tst_QScriptValue::isObject_makeData):
2250         (tst_QScriptValue::isObject_test):
2251         (tst_QScriptValue::toString_makeData):
2252         (tst_QScriptValue::toString_test):
2253         (tst_QScriptValue::toNumber_makeData):
2254         (tst_QScriptValue::toNumber_test):
2255         (tst_QScriptValue::toBool_makeData):
2256         (tst_QScriptValue::toBool_test):
2257         (tst_QScriptValue::toBoolean_makeData):
2258         (tst_QScriptValue::toBoolean_test):
2259         (tst_QScriptValue::toInteger_makeData):
2260         (tst_QScriptValue::toInteger_test):
2261         (tst_QScriptValue::toInt32_makeData):
2262         (tst_QScriptValue::toInt32_test):
2263         (tst_QScriptValue::toUInt32_makeData):
2264         (tst_QScriptValue::toUInt32_test):
2265         (tst_QScriptValue::toUInt16_makeData):
2266         (tst_QScriptValue::toUInt16_test):
2267
2268 2010-03-03  Chao-ying Fu  <fu@mips.com>
2269
2270         Reviewed by Gavin Barraclough.
2271
2272         MIPS JIT Supports
2273         https://bugs.webkit.org/show_bug.cgi?id=30144
2274
2275         The following changes enable MIPS YARR and YARR_JIT.
2276
2277         * assembler/AbstractMacroAssembler.h:
2278         (JSC::AbstractMacroAssembler::Imm32::Imm32):
2279         * assembler/MIPSAssembler.h: Added.
2280         (JSC::MIPSRegisters::):
2281         (JSC::MIPSAssembler::MIPSAssembler):
2282         (JSC::MIPSAssembler::):
2283         (JSC::MIPSAssembler::JmpSrc::JmpSrc):
2284         (JSC::MIPSAssembler::JmpDst::JmpDst):
2285         (JSC::MIPSAssembler::JmpDst::isUsed):
2286         (JSC::MIPSAssembler::JmpDst::used):
2287         (JSC::MIPSAssembler::emitInst):
2288         (JSC::MIPSAssembler::nop):
2289         (JSC::MIPSAssembler::loadDelayNop):
2290         (JSC::MIPSAssembler::copDelayNop):
2291         (JSC::MIPSAssembler::move):
2292         (JSC::MIPSAssembler::li):
2293         (JSC::MIPSAssembler::lui):
2294         (JSC::MIPSAssembler::addiu):
2295         (JSC::MIPSAssembler::addu):
2296         (JSC::MIPSAssembler::subu):
2297         (JSC::MIPSAssembler::mult):
2298         (JSC::MIPSAssembler::mfhi):
2299         (JSC::MIPSAssembler::mflo):
2300         (JSC::MIPSAssembler::mul):
2301         (JSC::MIPSAssembler::andInsn):
2302         (JSC::MIPSAssembler::andi):
2303         (JSC::MIPSAssembler::nor):
2304         (JSC::MIPSAssembler::orInsn):
2305         (JSC::MIPSAssembler::ori):
2306         (JSC::MIPSAssembler::xorInsn):
2307         (JSC::MIPSAssembler::xori):
2308         (JSC::MIPSAssembler::slt):
2309         (JSC::MIPSAssembler::sltu):
2310         (JSC::MIPSAssembler::sltiu):
2311         (JSC::MIPSAssembler::sll):
2312         (JSC::MIPSAssembler::sllv):
2313         (JSC::MIPSAssembler::sra):
2314         (JSC::MIPSAssembler::srav):
2315         (JSC::MIPSAssembler::lw):
2316         (JSC::MIPSAssembler::lwl):
2317         (JSC::MIPSAssembler::lwr):
2318         (JSC::MIPSAssembler::lhu):
2319         (JSC::MIPSAssembler::sw):
2320         (JSC::MIPSAssembler::jr):
2321         (JSC::MIPSAssembler::jalr):
2322         (JSC::MIPSAssembler::jal):
2323         (JSC::MIPSAssembler::bkpt):
2324         (JSC::MIPSAssembler::bgez):
2325         (JSC::MIPSAssembler::bltz):
2326         (JSC::MIPSAssembler::beq):
2327         (JSC::MIPSAssembler::bne):
2328         (JSC::MIPSAssembler::bc1t):
2329         (JSC::MIPSAssembler::bc1f):
2330         (JSC::MIPSAssembler::newJmpSrc):
2331         (JSC::MIPSAssembler::appendJump):
2332         (JSC::MIPSAssembler::addd):
2333         (JSC::MIPSAssembler::subd):
2334         (JSC::MIPSAssembler::muld):
2335         (JSC::MIPSAssembler::lwc1):
2336         (JSC::MIPSAssembler::ldc1):
2337         (JSC::MIPSAssembler::swc1):
2338         (JSC::MIPSAssembler::sdc1):
2339         (JSC::MIPSAssembler::mtc1):
2340         (JSC::MIPSAssembler::mfc1):
2341         (JSC::MIPSAssembler::truncwd):
2342         (JSC::MIPSAssembler::cvtdw):
2343         (JSC::MIPSAssembler::ceqd):
2344         (JSC::MIPSAssembler::cngtd):
2345         (JSC::MIPSAssembler::cnged):
2346         (JSC::MIPSAssembler::cltd):
2347         (JSC::MIPSAssembler::cled):
2348         (JSC::MIPSAssembler::cueqd):
2349         (JSC::MIPSAssembler::coled):
2350         (JSC::MIPSAssembler::coltd):
2351         (JSC::MIPSAssembler::culed):
2352         (JSC::MIPSAssembler::cultd):
2353         (JSC::MIPSAssembler::label):
2354         (JSC::MIPSAssembler::align):
2355         (JSC::MIPSAssembler::getRelocatedAddress):
2356         (JSC::MIPSAssembler::getDifferenceBetweenLabels):
2357         (JSC::MIPSAssembler::size):
2358         (JSC::MIPSAssembler::executableCopy):
2359         (JSC::MIPSAssembler::getCallReturnOffset):
2360         (JSC::MIPSAssembler::linkJump):
2361         (JSC::MIPSAssembler::linkCall):
2362         (JSC::MIPSAssembler::linkPointer):
2363         (JSC::MIPSAssembler::relinkJump):
2364         (JSC::MIPSAssembler::relinkCall):
2365         (JSC::MIPSAssembler::repatchInt32):
2366         (JSC::MIPSAssembler::repatchPointer):
2367         (JSC::MIPSAssembler::repatchLoadPtrToLEA):
2368         (JSC::MIPSAssembler::relocateJumps):
2369         (JSC::MIPSAssembler::linkWithOffset):
2370         (JSC::MIPSAssembler::linkCallInternal):
2371         * assembler/MacroAssembler.h:
2372         * assembler/MacroAssemblerMIPS.h: Added.
2373         (JSC::MacroAssemblerMIPS::MacroAssemblerMIPS):
2374         (JSC::MacroAssemblerMIPS::):
2375         (JSC::MacroAssemblerMIPS::add32):
2376         (JSC::MacroAssemblerMIPS::and32):
2377         (JSC::MacroAssemblerMIPS::lshift32):
2378         (JSC::MacroAssemblerMIPS::mul32):
2379         (JSC::MacroAssemblerMIPS::not32):
2380         (JSC::MacroAssemblerMIPS::or32):
2381         (JSC::MacroAssemblerMIPS::rshift32):
2382         (JSC::MacroAssemblerMIPS::sub32):
2383         (JSC::MacroAssemblerMIPS::xor32):
2384         (JSC::MacroAssemblerMIPS::load32):
2385         (JSC::MacroAssemblerMIPS::load32WithUnalignedHalfWords):
2386         (JSC::MacroAssemblerMIPS::load32WithAddressOffsetPatch):
2387         (JSC::MacroAssemblerMIPS::loadPtrWithPatchToLEA):
2388         (JSC::MacroAssemblerMIPS::loadPtrWithAddressOffsetPatch):
2389         (JSC::MacroAssemblerMIPS::load16):
2390         (JSC::MacroAssemblerMIPS::store32WithAddressOffsetPatch):
2391         (JSC::MacroAssemblerMIPS::store32):
2392         (JSC::MacroAssemblerMIPS::supportsFloatingPoint):
2393         (JSC::MacroAssemblerMIPS::supportsFloatingPointTruncate):
2394         (JSC::MacroAssemblerMIPS::pop):
2395         (JSC::MacroAssemblerMIPS::push):
2396         (JSC::MacroAssemblerMIPS::move):
2397         (JSC::MacroAssemblerMIPS::swap):
2398         (JSC::MacroAssemblerMIPS::signExtend32ToPtr):
2399         (JSC::MacroAssemblerMIPS::zeroExtend32ToPtr):
2400         (JSC::MacroAssemblerMIPS::branch32):
2401         (JSC::MacroAssemblerMIPS::branch32WithUnalignedHalfWords):
2402         (JSC::MacroAssemblerMIPS::branch16):
2403         (JSC::MacroAssemblerMIPS::branchTest32):
2404         (JSC::MacroAssemblerMIPS::jump):
2405         (JSC::MacroAssemblerMIPS::branchAdd32):
2406         (JSC::MacroAssemblerMIPS::branchMul32):
2407         (JSC::MacroAssemblerMIPS::branchSub32):
2408         (JSC::MacroAssemblerMIPS::breakpoint):
2409         (JSC::MacroAssemblerMIPS::nearCall):
2410         (JSC::MacroAssemblerMIPS::call):
2411         (JSC::MacroAssemblerMIPS::ret):
2412         (JSC::MacroAssemblerMIPS::set32):
2413         (JSC::MacroAssemblerMIPS::setTest32):
2414         (JSC::MacroAssemblerMIPS::moveWithPatch):
2415         (JSC::MacroAssemblerMIPS::branchPtrWithPatch):
2416         (JSC::MacroAssemblerMIPS::storePtrWithPatch):
2417         (JSC::MacroAssemblerMIPS::tailRecursiveCall):
2418         (JSC::MacroAssemblerMIPS::makeTailRecursiveCall):
2419         (JSC::MacroAssemblerMIPS::loadDouble):
2420         (JSC::MacroAssemblerMIPS::storeDouble):
2421         (JSC::MacroAssemblerMIPS::addDouble):
2422         (JSC::MacroAssemblerMIPS::subDouble):
2423         (JSC::MacroAssemblerMIPS::mulDouble):
2424         (JSC::MacroAssemblerMIPS::convertInt32ToDouble):
2425         (JSC::MacroAssemblerMIPS::insertRelaxationWords):
2426         (JSC::MacroAssemblerMIPS::branchTrue):
2427         (JSC::MacroAssemblerMIPS::branchFalse):
2428         (JSC::MacroAssemblerMIPS::branchEqual):
2429         (JSC::MacroAssemblerMIPS::branchNotEqual):
2430         (JSC::MacroAssemblerMIPS::branchDouble):
2431         (JSC::MacroAssemblerMIPS::branchTruncateDoubleToInt32):
2432         (JSC::MacroAssemblerMIPS::linkCall):
2433         (JSC::MacroAssemblerMIPS::repatchCall):
2434         * jit/ExecutableAllocator.h:
2435         (JSC::ExecutableAllocator::cacheFlush):
2436         * wtf/Platform.h:
2437         * yarr/RegexJIT.cpp:
2438         (JSC::Yarr::RegexGenerator::generateEnter):
2439         (JSC::Yarr::RegexGenerator::generateReturn):
2440
2441 2010-03-03  Steve Falkenburg  <sfalken@apple.com>
2442
2443         Windows build fix.
2444
2445         * JavaScriptCore.vcproj/jsc/jsc.vcproj:
2446         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
2447
2448 2010-03-03  Steve Falkenburg  <sfalken@apple.com>
2449
2450         Windows build fix.
2451
2452         * JavaScriptCore.vcproj/jsc/jsc.vcproj:
2453
2454 2010-03-03  Mark Rowe  <mrowe@apple.com>
2455
2456         Reviewed by Geoff Garen.
2457
2458         Add virtual memory tags for TCMalloc and WebCore's purgeable buffers.
2459
2460         * wtf/TCSystemAlloc.cpp:
2461         (TryMmap): Use the VM tag.
2462         * wtf/VMTags.h: Make use of VM_MEMORY_TCMALLOC and VM_MEMORY_WEBCORE_PURGEABLE_BUFFERS.
2463
2464 2010-03-03  Steve Falkenburg  <sfalken@apple.com>
2465
2466         Rubber stamped by Adam Roben.
2467
2468         Fix bogus xcopy that was polluting source tree at build time.
2469
2470         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
2471
2472 2010-03-02  Fridrich Strba  <fridrich.strba@bluewin.ch>
2473
2474         Reviewed by Oliver Hunt.
2475
2476         Allow building smoothly on win32 and win64 using GCC
2477         https://bugs.webkit.org/show_bug.cgi?id=35607
2478
2479         * jit/JITStubs.h:
2480         * runtime/Collector.cpp:
2481         (JSC::Heap::allocateBlock):
2482         (JSC::Heap::freeBlockPtr):
2483         (JSC::currentThreadStackBase):
2484
2485 2010-03-02  Jeremy Orlow  <jorlow@chromium.org>
2486
2487         Reviewed by David Levin.
2488
2489         Revert database thread changes that are no longer required
2490         https://bugs.webkit.org/show_bug.cgi?id=35519
2491
2492         Jochen Eisinger created 55214 and 55247 to track which database
2493         owns which thread.  Dmitry suggested that this could also
2494         be done via TLS, though.  After exploring the options, Jochen
2495         chose to go the TLS route, so these patches are no longer needed.
2496
2497         * wtf/Threading.h:
2498         * wtf/ThreadingNone.cpp:
2499         (WTF::isMainThread):
2500         * wtf/ThreadingPthreads.cpp:
2501         (WTF::identifierByPthreadHandle):
2502         (WTF::establishIdentifierForPthreadHandle):
2503         (WTF::pthreadHandleForIdentifier):
2504         (WTF::createThreadInternal):
2505         (WTF::currentThread):
2506         * wtf/ThreadingWin.cpp:
2507         (WTF::threadMap):
2508         (WTF::storeThreadHandleByIdentifier):
2509         (WTF::threadHandleForIdentifier):
2510         (WTF::createThreadInternal):
2511
2512 2010-03-02  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
2513
2514         Reviewed by Simon Hausmann.
2515
2516         Fix QScriptValue::toString().
2517
2518         More ECMA Script compliance, especially for values as NaN, Inifinite
2519         and really big/small numbers.
2520
2521         [Qt] QScriptValue::toString() returns incorrect values
2522         https://bugs.webkit.org/show_bug.cgi?id=34850
2523
2524         * qt/api/qscriptconverter_p.h:
2525         (QScriptConverter::toString):
2526         * qt/api/qscriptvalue_p.h:
2527         (QScriptValuePrivate::toString):
2528         * qt/tests/qscriptvalue/tst_qscriptvalue.cpp:
2529         * qt/tests/qscriptvalue/tst_qscriptvalue.h:
2530         * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp:
2531         (tst_QScriptValue::toString_initData):
2532         (tst_QScriptValue::toString_makeData):
2533         (tst_QScriptValue::toString_test):
2534
2535 2010-03-02  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
2536
2537         Reviewed by Simon Hausmann.
2538
2539         Introduce a new class; QScriptString.
2540
2541         The QScriptString class should act as a handle to "interned"
2542         strings in a QScriptEngine.
2543
2544         [Qt] QtScript should provide QScriptString
2545         https://bugs.webkit.org/show_bug.cgi?id=34843
2546
2547         * qt/api/QtScript.pro:
2548         * qt/api/qscriptengine.cpp:
2549         (QScriptEngine::toStringHandle):
2550         * qt/api/qscriptengine.h:
2551         * qt/api/qscriptengine_p.h:
2552         (QScriptEnginePrivate::toStringHandle):
2553         * qt/api/qscriptstring.cpp: Added.
2554         (QScriptString::QScriptString):
2555         (QScriptString::~QScriptString):
2556         (QScriptString::operator=):
2557         (QScriptString::isValid):
2558         (QScriptString::operator==):
2559         (QScriptString::operator!=):
2560         (QScriptString::toArrayIndex):
2561         (QScriptString::toString):
2562         (QScriptString::operator QString):
2563         (qHash):
2564         * qt/api/qscriptstring.h: Added.
2565         * qt/api/qscriptstring_p.h: Added.
2566         (QScriptStringPrivate::QScriptStringPrivate):
2567         (QScriptStringPrivate::~QScriptStringPrivate):
2568         (QScriptStringPrivate::get):
2569         (QScriptStringPrivate::isValid):
2570         (QScriptStringPrivate::operator==):
2571         (QScriptStringPrivate::operator!=):
2572         (QScriptStringPrivate::toArrayIndex):
2573         (QScriptStringPrivate::toString):
2574         (QScriptStringPrivate::id):
2575         * qt/tests/qscriptstring/qscriptstring.pro: Added.
2576         * qt/tests/qscriptstring/tst_qscriptstring.cpp: Added.
2577         (tst_QScriptString::tst_QScriptString):
2578         (tst_QScriptString::~tst_QScriptString):
2579         (tst_QScriptString::test):
2580         (tst_QScriptString::hash):
2581         (tst_QScriptString::toArrayIndex_data):
2582         (tst_QScriptString::toArrayIndex):
2583         * qt/tests/tests.pro:
2584
2585 2010-03-02  Oliver Hunt  <oliver@apple.com>
2586
2587         Reviewed by NOBODY (Build fix).
2588
2589         Export function on windows.
2590
2591         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2592
2593 2010-03-01  Oliver Hunt  <oliver@apple.com>
2594
2595         Reviewed by Maciej Stachowiak.
2596
2597         Refactor named getter function signature to be in line with indexing getter signature
2598         https://bugs.webkit.org/show_bug.cgi?id=35563
2599
2600         This removes the PropertySlot argument from getter functions, and makes them directly
2601         pass the slot base.  This makes the semantics for the functions match that of the
2602         indexing getters.
2603
2604         On the down side, this means that we can no longer simply use a proxy function for
2605         JS getters, so we now add another marker value to indicate that a getter is present
2606         and branch accordingly.
2607
2608         Against all rationality sunspider reports this as a perf win, but i suspect it's just noise.
2609
2610         * API/JSCallbackObject.h:
2611         * API/JSCallbackObjectFunctions.h:
2612         (JSC::::staticValueGetter):
2613         (JSC::::staticFunctionGetter):
2614         (JSC::::callbackGetter):
2615         * JavaScriptCore.exp:
2616         * runtime/JSActivation.cpp:
2617         (JSC::JSActivation::argumentsGetter):
2618         * runtime/JSActivation.h:
2619         * runtime/JSFunction.cpp:
2620         (JSC::JSFunction::argumentsGetter):
2621         (JSC::JSFunction::callerGetter):
2622         (JSC::JSFunction::lengthGetter):
2623         * runtime/JSFunction.h:
2624         * runtime/NumberConstructor.cpp:
2625         (JSC::numberConstructorNaNValue):
2626         (JSC::numberConstructorNegInfinity):
2627         (JSC::numberConstructorPosInfinity):
2628         (JSC::numberConstructorMaxValue):
2629         (JSC::numberConstructorMinValue):
2630         * runtime/PropertySlot.cpp:
2631         (JSC::PropertySlot::functionGetter):
2632         * runtime/PropertySlot.h:
2633         (JSC::PropertySlot::getValue):
2634         (JSC::PropertySlot::setGetterSlot):
2635         (JSC::PropertySlot::setCacheableGetterSlot):
2636         * runtime/RegExpConstructor.cpp:
2637         (JSC::regExpConstructorDollar1):
2638         (JSC::regExpConstructorDollar2):
2639         (JSC::regExpConstructorDollar3):
2640         (JSC::regExpConstructorDollar4):
2641         (JSC::regExpConstructorDollar5):
2642         (JSC::regExpConstructorDollar6):
2643         (JSC::regExpConstructorDollar7):
2644         (JSC::regExpConstructorDollar8):
2645         (JSC::regExpConstructorDollar9):
2646         (JSC::regExpConstructorInput):
2647         (JSC::regExpConstructorMultiline):
2648         (JSC::regExpConstructorLastMatch):
2649         (JSC::regExpConstructorLastParen):
2650         (JSC::regExpConstructorLeftContext):
2651         (JSC::regExpConstructorRightContext):
2652         * runtime/RegExpObject.cpp:
2653         (JSC::regExpObjectGlobal):
2654         (JSC::regExpObjectIgnoreCase):
2655         (JSC::regExpObjectMultiline):
2656         (JSC::regExpObjectSource):
2657         (JSC::regExpObjectLastIndex):
2658
2659 2010-03-01  Oliver Hunt  <oliver@apple.com>
2660
2661         Reviewed by Gavin Barraclough.
2662
2663         PropertySlot::getValue(ExecState, unsigned) unnecessarily converts index to an Identifier
2664         https://bugs.webkit.org/show_bug.cgi?id=35561
2665
2666         Fix this by defining a separate property getter function for index getters.  This allows
2667         us to pass an unsigned number without the conversion to an Identifier.  We then update
2668         setCustomIndex to take this new getter type.
2669
2670         * runtime/PropertySlot.h:
2671         (JSC::PropertySlot::getValue):
2672         (JSC::PropertySlot::setCustom):
2673         (JSC::PropertySlot::setCustomIndex):
2674
2675 2010-03-01  Gavin Barraclough  <barraclough@apple.com>
2676
2677         Reviewed by Oliver Hunt.
2678
2679         Bug 35537 - put_by_id does will incorrectly cache writes where a specific value exists,
2680                     where at the point of caching the same value is being written.
2681
2682         When performing a put_by_id that is replacing a property already present on the object,
2683         there are three interesting cases regarding the state of the specific value:
2684
2685         (1) No specific value set - nothing to do, leave the structure in it's current state,
2686             can cache.
2687         (2) A specific value was set, the new put is not of a specified value (i.e. function),
2688             or is of a different specific value - in these cases we need to perform a despecifying
2689             transition to clear the specific value in the structure, but having done so this is a
2690             normal property so as such we can again cache normally.
2691         (3) A specific value was set, and we are overwriting with the same value - in these cases
2692             leave the structure unchanged, but since a specific value is set we cannot cache this
2693             put (we would need the JIT to dynamically check the value being written matched).
2694
2695         Unfortunately, the current behaviour does not match this.  the checks for a specific value
2696         being present & the value matching are combined in such a way that in case (2), above we
2697         will unnecessarily prevent the transition being cached, but in case (3) we will incorrectly
2698         fail to prevent caching.
2699
2700         The bug exposes itself if multiple puts of the same specific value are performed to a
2701         property, and erroneously the put is allowed to be cached by the JIT.  Method checks may be
2702         generated caching calls of this structure.  Subsequent puts performed from JIT code may
2703         write different values without triggering a despecify transition, and as such cached method
2704         checks will continue to pass, despite the value having changed.
2705
2706         * runtime/JSObject.h:
2707         (JSC::JSObject::putDirectInternal):
2708
2709 2010-03-01  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>
2710
2711         Reviewed by Simon Hausmann.
2712
2713         Fix the Qt build on Mac OS X/Cocoa 64-bit
2714
2715         * JavaScriptCore.pri: Add missing implementation file to resolve JSC symbols
2716
2717 2010-02-26  Gavin Barraclough  <barraclough@apple.com>
2718
2719         Rubber Stamped by Geoff Garen.
2720
2721         Remove wrec.  All builds should have switched to yarr by now.
2722
2723         * Android.mk:
2724         * GNUmakefile.am:
2725         * JavaScriptCore.gypi:
2726         * JavaScriptCore.pri:
2727         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2728         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
2729         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
2730         * JavaScriptCore.xcodeproj/project.pbxproj:
2731         * runtime/RegExp.cpp:
2732         (JSC::RegExp::match):
2733         * runtime/RegExp.h:
2734         * wrec: Removed.
2735         * wrec/CharacterClass.cpp: Removed.
2736         * wrec/CharacterClass.h: Removed.
2737         * wrec/CharacterClassConstructor.cpp: Removed.
2738         * wrec/CharacterClassConstructor.h: Removed.
2739         * wrec/Escapes.h: Removed.
2740         * wrec/Quantifier.h: Removed.
2741         * wrec/WREC.cpp: Removed.
2742         * wrec/WREC.h: Removed.
2743         * wrec/WRECFunctors.cpp: Removed.
2744         * wrec/WRECFunctors.h: Removed.
2745         * wrec/WRECGenerator.cpp: Removed.
2746         * wrec/WRECGenerator.h: Removed.
2747         * wrec/WRECParser.cpp: Removed.
2748         * wrec/WRECParser.h: Removed.
2749         * wscript:
2750
2751 2010-02-26  Oliver Hunt  <oliver@apple.com>
2752
2753         Reviewed by Geoff Garen.
2754
2755         Make the lookup table generator include an explicit cast to expected
2756         type of the function.  We do this because otherwise the blind intptr_t
2757         cast that is subsequently applied allows incorrectly typed functions
2758         to be inserted into the table, where they will only fail at runtime.
2759         This change makes such errors produce a compile time failure.
2760
2761         * create_hash_table:
2762
2763 2010-02-26  Janne Koskinen  <janne.p.koskinen@digia.com>
2764
2765         Reviewed by Simon Hausmann.
2766
2767         [Qt] Symbian specific getCPUTime implemetation
2768         https://bugs.webkit.org/show_bug.cgi?id=34742
2769
2770         Default implementation doesn't work on Symbian devices.
2771         This change adds a proper implementation by
2772         asking thread execution time from the current thread.
2773
2774         * runtime/TimeoutChecker.cpp:
2775         (JSC::getCPUTime):
2776
2777 2010-02-25  Alexey Proskuryakov  <ap@apple.com>
2778
2779         Reviewed by Anders Carlsson.
2780
2781         https://bugs.webkit.org/show_bug.cgi?id=35406
2782         <rdar://problem/6945502> Make generic array methods work with JavaArray
2783
2784         Renamed lazyCreationData to subclassData. This is extra data that can be used by JSArray
2785         subclasses (you can't add new data members, because it wouldn't fit in JSCell otherwise).
2786
2787         * JavaScriptCore.exp:
2788         * runtime/JSArray.cpp:
2789         (JSC::JSArray::JSArray):
2790         (JSC::JSArray::subclassData):
2791         (JSC::JSArray::setSubclassData):
2792         * runtime/JSArray.h:
2793         * runtime/RegExpConstructor.cpp:
2794         (JSC::RegExpMatchesArray::RegExpMatchesArray):
2795         (JSC::RegExpMatchesArray::~RegExpMatchesArray):
2796         (JSC::RegExpMatchesArray::fillArrayInstance):
2797         * runtime/RegExpMatchesArray.h:
2798         (JSC::RegExpMatchesArray::getOwnPropertySlot):
2799         (JSC::RegExpMatchesArray::getOwnPropertyDescriptor):
2800         (JSC::RegExpMatchesArray::put):
2801         (JSC::RegExpMatchesArray::deleteProperty):
2802         (JSC::RegExpMatchesArray::getOwnPropertyNames):
2803
2804 2010-02-25  Oliver Hunt  <oliver@apple.com>
2805
2806         Reviewed by Geoff Garen.
2807
2808         JSC crashes like crazy in the JSPropertyNameIterator destructor
2809
2810         Add back null check of m_cachedStructure.  Curse last minute changes.
2811
2812         * runtime/JSPropertyNameIterator.cpp:
2813         (JSC::JSPropertyNameIterator::~JSPropertyNameIterator):
2814
2815 2010-02-25  Oliver Hunt  <oliver@apple.com>
2816
2817         Reviewed by Maciej Stachowiak.
2818
2819         Race condition in JSPropertyNameIterator and Structure destruction
2820         https://bugs.webkit.org/show_bug.cgi?id=35398
2821
2822         JSPropertyNameIterator and Structure have a cyclic dependency that they
2823         manage by clearing the appropriate reference in each other during their
2824         destruction.  However if the Structure is destroyed while the 
2825         JSPropertyNameIterator is dead but not yet finalized the Structures
2826         WeakGCPtr will return null, and so prevent Structure from clearing
2827         the m_cachedStructure pointer of the iterator.  When the iterator is
2828         then finalised the m_cachedStructure is invalid, and the attempt to
2829         clear the structures back reference fails.
2830
2831         To fix this we simply make JSPropertyNameIterator keep the Structure
2832         alive, using the weak pointer to break the ref cycle.
2833
2834         * runtime/JSPropertyNameIterator.cpp:
2835         (JSC::JSPropertyNameIterator::~JSPropertyNameIterator):
2836           The iterator now keeps m_cachedStructure alive itself, so no longer needs
2837           to check for it being cleared
2838         * runtime/JSPropertyNameIterator.h:
2839         (JSC::JSPropertyNameIterator::setCachedStructure):
2840           Add an assertion to ensure correct usage
2841         (JSC::JSPropertyNameIterator::cachedStructure):
2842           Add .get()
2843         * runtime/Structure.cpp:
2844         (JSC::Structure::~Structure):
2845           Add an assertion that our iterator isn't already dead, and remove
2846           the now unnecessary attempt to clear the ref in the iterator
2847         * runtime/WeakGCPtr.h:
2848         (JSC::WeakGCPtr::hasDeadObject):
2849           An assert-only function to allow us to assert correct behaviour
2850           in the Structure destructor
2851
2852 2010-02-25  Jochen Eisinger  <jochen@chromium.org>
2853  
2854         Reviewed by Jeremy Orlow.
2855  
2856         Make the context that was passed to the ThreadFunction accessible.
2857         https://bugs.webkit.org/show_bug.cgi?id=35379
2858
2859         When a database is opened, right now you
2860         don't have any context from where it is opened. The problem is that
2861         the actual calls that open a database go through the sqlite3 vfs
2862         layer, so there's no easy way to pass this function down to to
2863         platform/sql/chromium/SQLFileSystemChromium*.cpp
2864
2865         This patch will allow you to get from anywhere within webkit a pointer
2866         to the Thread object that actually created the thread you're currently
2867         on (in case of the database, this can be either a thread forked of
2868         from the main thread or from a worker thread), and query the object
2869         for context information.
2870
2871         * wtf/Threading.h:
2872         * wtf/ThreadingNone.cpp:
2873         (WTF::threadContext):
2874         * wtf/ThreadingPthreads.cpp:
2875         (WTF::):
2876         (WTF::identifierByPthreadHandle):
2877         (WTF::establishIdentifierForPthreadHandle):
2878         (WTF::pthreadHandleForIdentifier):
2879         (WTF::contextForIdentifier):
2880         (WTF::createThreadInternal):
2881         (WTF::currentThread):
2882         (WTF::threadContext):
2883         * wtf/ThreadingWin.cpp:
2884         (WTF::):
2885         (WTF::threadMap):
2886         (WTF::storeThreadHandleByIdentifier):
2887         (WTF::threadHandleForIdentifier):
2888         (WTF::contextForIdentifier):
2889         (WTF::createThreadInternal):
2890         (WTF::threadContext):
2891
2892 2010-02-25  Jeremy Orlow  <jorlow@chromium.org>
2893
2894         Reverting to re-submit with better change log.
2895
2896         * wtf/Threading.h:
2897         * wtf/ThreadingNone.cpp:
2898         (WTF::isMainThread):
2899         * wtf/ThreadingPthreads.cpp:
2900         (WTF::identifierByPthreadHandle):
2901         (WTF::establishIdentifierForPthreadHandle):
2902         (WTF::pthreadHandleForIdentifier):
2903         (WTF::createThreadInternal):
2904         (WTF::currentThread):
2905         * wtf/ThreadingWin.cpp:
2906         (WTF::threadMap):
2907         (WTF::storeThreadHandleByIdentifier):
2908         (WTF::threadHandleForIdentifier):
2909         (WTF::createThreadInternal):
2910
2911 2010-02-25  Jochen Eisinger  <jochen@chromium.org>
2912
2913         Reviewed by Jeremy Orlow.
2914
2915         Make the context that was passed to the ThreadFunction accessible.
2916         https://bugs.webkit.org/show_bug.cgi?id=35379
2917
2918         * wtf/Threading.h:
2919         * wtf/ThreadingNone.cpp:
2920         (WTF::threadContext):
2921         * wtf/ThreadingPthreads.cpp:
2922         (WTF::):
2923         (WTF::identifierByPthreadHandle):
2924         (WTF::establishIdentifierForPthreadHandle):
2925         (WTF::pthreadHandleForIdentifier):
2926         (WTF::contextForIdentifier):
2927         (WTF::createThreadInternal):
2928         (WTF::currentThread):
2929         (WTF::threadContext):
2930         * wtf/ThreadingWin.cpp:
2931         (WTF::):
2932         (WTF::threadMap):
2933         (WTF::storeThreadHandleByIdentifier):
2934         (WTF::threadHandleForIdentifier):
2935         (WTF::contextForIdentifier):
2936         (WTF::createThreadInternal):
2937         (WTF::threadContext):
2938
2939 2010-02-24  Oliver Hunt  <oliver@apple.com>
2940
2941         Reviewed by Geoffrey Garen.
2942
2943         [REGRESSION in r55185] EXC_BAD_ACCESS on opening inspector.
2944         https://bugs.webkit.org/show_bug.cgi?id=35335
2945
2946         compileGetDirectOffset modifies the contents of the object register
2947         when the object is not using the inline storage array.  As the object
2948         register contains our 'this' pointer we can't allow it to be clobbered.
2949         The fix is simply to copy the register into a separate scratch register
2950         when we're loading off an object that doesn't use inline storage.
2951
2952         * jit/JITPropertyAccess.cpp:
2953         (JSC::JIT::privateCompileGetByIdSelfList):
2954         * jit/JITPropertyAccess32_64.cpp:
2955         (JSC::JIT::privateCompileGetByIdSelfList):
2956
2957 2010-02-24  Oliver Hunt  <oliver@apple.com>
2958
2959         Reviewed by Gavin Barraclough.
2960
2961         Speed up getter performance in the jit
2962         https://bugs.webkit.org/show_bug.cgi?id=35332
2963
2964         Implement getter lookup caching in the interpreter.
2965         The getter stubs are generated through basically the
2966         same code paths as the normal get_by_id caching.
2967         Instead of simply loading a property and returning,
2968         we load the getter slot, and pass the getter, base value
2969         and return address to a shared stub used for getter
2970         dispatch.
2971
2972         * jit/JIT.h:
2973         (JSC::JIT::compileGetByIdProto):
2974         (JSC::JIT::compileGetByIdSelfList):
2975         (JSC::JIT::compileGetByIdProtoList):
2976         (JSC::JIT::compileGetByIdChainList):
2977         (JSC::JIT::compileGetByIdChain):
2978         * jit/JITPropertyAccess.cpp:
2979         (JSC::JIT::privateCompileGetByIdProto):
2980         (JSC::JIT::privateCompileGetByIdSelfList):
2981         (JSC::JIT::privateCompileGetByIdProtoList):
2982         (JSC::JIT::privateCompileGetByIdChainList):
2983         (JSC::JIT::privateCompileGetByIdChain):
2984         * jit/JITPropertyAccess32_64.cpp:
2985         (JSC::JIT::privateCompileGetByIdProto):
2986         (JSC::JIT::privateCompileGetByIdSelfList):
2987         (JSC::JIT::privateCompileGetByIdProtoList):
2988         (JSC::JIT::privateCompileGetByIdChainList):
2989         (JSC::JIT::privateCompileGetByIdChain):
2990         * jit/JITStubs.cpp:
2991         (JSC::JITThunks::tryCacheGetByID):
2992         (JSC::DEFINE_STUB_FUNCTION):
2993         * jit/JITStubs.h:
2994         (JSC::):
2995         * runtime/GetterSetter.h:
2996
2997 2010-02-23  Oliver Hunt  <oliver@apple.com>
2998
2999         Reviewed by Maciej Stachowiak.
3000
3001         Web Inspector: Regression: r55027+: Inspector broken
3002         https://bugs.webkit.org/show_bug.cgi?id=35253
3003
3004         op_get_by_id_getter_chain was not passing the correct this parameter.
3005         The bug was caused by incorrect use of baseCell instead of baseValue,
3006         baseValue contains the original object for the lookup (and hence the
3007         correct this object), baseCell is clobbered as part of walking the
3008         prototype chain.
3009
3010         * interpreter/Interpreter.cpp:
3011         (JSC::Interpreter::privateExecute):
3012
3013 2010-02-23  Gustavo Noronha Silva  <gns@gnome.org>
3014
3015         Rubber-stamped by Dimitri Glazkov.
3016
3017         Chromium build fix.
3018
3019         * JavaScriptCore.gyp/JavaScriptCore.gyp:
3020
3021 2010-02-23  Leandro Pereira  <leandro@profusion.mobi>
3022
3023         Reviewed by Gustavo Noronha Silva.
3024
3025         Changes references of GOwnPtr to reflect their new place.
3026         http://webkit.org/b/35084
3027
3028         * JavaScriptCore/JavaScriptCore.gypi:
3029         * JavaScriptCore/wtf/Threading.h:
3030         * JavaScriptCore/wtf/unicode/glib/UnicodeGLib.h:
3031
3032 2010-02-23  Leandro Pereira  <leandro@profusion.mobi>
3033
3034         Reviewed by Kenneth Rohde Christiansen.
3035
3036         Adding the EFL implementation of JavaScriptCore.
3037         See https://bugs.webkit.org/show_bug.cgi?id=35084 for details.
3038
3039         * GNUmakefile.am: Updated to reflect the new location of GOwnPtr and
3040                           GRefPtr.
3041         * wtf/efl/MainThreadEfl.cpp: Added.
3042         * wtf/gobject/GOwnPtr.cpp: Moved from wtf/gtk.
3043         * wtf/gobject/GOwnPtr.h: Moved from wtf/gtk.
3044         * wtf/gobject/GRefPtr.cpp: Moved from wtf/gtk.
3045         * wtf/gobject/GRefPtr.h: Moved from wtf/gtk.
3046
3047 2010-02-22  Julien Chaffraix  <jchaffraix@webkit.org>
3048
3049         Reviewed by Darin Adler.
3050
3051         Remove auto_ptr usage in JavaScriptCore.
3052         https://bugs.webkit.org/show_bug.cgi?id=35221
3053
3054         * parser/Nodes.h: Removed now unneeded adopt method.
3055         * parser/Parser.cpp: Removed <memory> include as it is not required anymore.
3056         * wtf/OwnPtr.h: Removed the constructor from auto_ptr.
3057         * wtf/VectorTraits.h: Removed a template specialization for auto_ptr.
3058         * wtf/unicode/Collator.h: Made userDefault return a PassOwnPtr.
3059         * wtf/unicode/CollatorDefault.cpp:
3060         (WTF::Collator::userDefault): Changed the method to match the next signature.
3061         * wtf/unicode/icu/CollatorICU.cpp:
3062         (WTF::Collator::userDefault): Ditto.
3063
3064 2010-02-22  Huahui Wu  <hwu@google.com>
3065
3066         Reviewed by Eric Seidel.
3067
3068         Add code that enables SquirrelFish Extreme (a.k.a JSCX, JSC JIT)
3069         in Android. It's disabled by default, but is enabled when the 
3070         enveronment variable ENABLE_JSC_JIT is set to true.
3071         https://bugs.webkit.org/show_bug.cgi?id=34855
3072
3073         * Android.mk:
3074         * wtf/Platform.h:
3075
3076 2010-02-22  Gavin Barraclough  <barraclough@apple.com>
3077
3078         Reviewed by Oliver Hunt.
3079
3080         JSStringBuilder should not CRASH if allocation fails, it should throw a JSException.
3081
3082         * runtime/JSGlobalObjectFunctions.cpp:
3083         * runtime/JSStringBuilder.h:
3084         (JSC::JSStringBuilder::JSStringBuilder):
3085         (JSC::JSStringBuilder::append):
3086         (JSC::JSStringBuilder::build):
3087         * runtime/StringBuilder.h:
3088         (JSC::StringBuilder::build):
3089         * wtf/Vector.h:
3090         (WTF::VectorBufferBase::tryAllocateBuffer):
3091         (WTF::):
3092         (WTF::VectorBuffer::tryAllocateBuffer):
3093         (WTF::::tryExpandCapacity):
3094         (WTF::::tryReserveCapacity):
3095         (WTF::::tryAppend):
3096
3097 2010-02-22  Kwang Yul Seo  <skyul@company100.net>
3098
3099         Reviewed by Eric Seidel.
3100
3101         [BREWMP] Map FastMalloc to BREW memory allocator
3102         https://bugs.webkit.org/show_bug.cgi?id=33570
3103
3104         Use MALLOC macro instead of the standard malloc function.
3105         Although RVCT provides malloc, we can't use it in BREW
3106         because the loader does not initialize the base address properly.
3107
3108         * wtf/FastMalloc.cpp:
3109         * wtf/brew/SystemMallocBrew.h: Added.
3110         (mallocBrew):
3111         (callocBrew):
3112         (freeBrew):
3113         (reallocBrew):
3114
3115 2010-02-22  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
3116
3117         Build fix for make distcheck.
3118
3119         * GNUmakefile.am:
3120
3121 2010-02-22  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
3122
3123         Unreviewed build fix.
3124
3125         [Qt] Build fix for RVCT.
3126
3127         Fix after r55024. The "-i" option is for perl not for the
3128         script.
3129
3130         * DerivedSources.pro:
3131
3132 2010-02-21  Gavin Barraclough  <barraclough@apple.com>
3133
3134         Reviewed by Oliver Hunt.
3135
3136         Make UString::m_data be const, and make the UChar owned/ref-counted by CrossThreadRefCounted be const too.
3137
3138         * runtime/UStringImpl.cpp:
3139         (JSC::UStringImpl::baseSharedBuffer):
3140         (JSC::UStringImpl::~UStringImpl):
3141         * runtime/UStringImpl.h:
3142         (JSC::UStringImpl::create):
3143         (JSC::UStringImpl::data):
3144         (JSC::UStringImpl::UStringImpl):
3145         * wtf/OwnFastMallocPtr.h:
3146         (WTF::OwnFastMallocPtr::~OwnFastMallocPtr):
3147
3148 2010-02-21  Yuta Kitamura  <yutak@chromium.org>
3149
3150         Reviewed by Darin Adler.
3151
3152         HashMapTranslatorAdapter::translate() needs to set the mapped value.
3153
3154         HTTPHeaderMap::add(const char*, const String&) does not work
3155         https://bugs.webkit.org/show_bug.cgi?id=35227
3156
3157         * wtf/HashMap.h:
3158         (WTF::HashMapTranslatorAdapter::translate):
3159
3160 2010-02-19  Maciej Stachowiak  <mjs@apple.com>
3161
3162         Reviewed by David Levin.
3163
3164         Add an ENABLE flag for sandboxed iframes to make it possible to disable it in releases
3165         https://bugs.webkit.org/show_bug.cgi?id=35147
3166
3167         * Configurations/FeatureDefines.xcconfig:
3168
3169 2010-02-19  Gavin Barraclough  <barraclough@apple.com>
3170
3171         Reviewed by Oliver Hunt.
3172
3173         JSString::getIndex() calls value() to resolve the string value (is a rope)
3174         to a UString, then passes the result to jsSingleCharacterSubstring without
3175         checking for an exception.  In case of out-of-memory the returned UString
3176         is null(), which may result in an out-of-buounds substring being created.
3177         This is bad.
3178
3179         Simple fix is to be able to get an index from a rope without resolving to
3180         UString.  This may be a useful optimization in some test cases.
3181
3182         The same bug exists in some other methods is JSString, these can be fixed
3183         by changing them to call getIndex().
3184
3185         * runtime/JSString.cpp:
3186         (JSC::JSString::resolveRope):
3187         (JSC::JSString::getStringPropertyDescriptor):
3188         * runtime/JSString.h:
3189         (JSC::jsSingleCharacterSubstring):
3190         (JSC::JSString::getIndex):
3191         (JSC::jsSingleCharacterString):
3192         (JSC::JSString::getStringPropertySlot):
3193         * runtime/UStringImpl.cpp:
3194         (JSC::singleCharacterSubstring):
3195         * runtime/UStringImpl.h:
3196         (JSC::UStringImpl::singleCharacterSubstring):
3197
3198 2010-02-19  Oliver Hunt  <oliver@apple.com>
3199
3200         RS = Gavin Barraclough.
3201
3202         Split the 32/64 version of JITPropertyAccess into a separate file.
3203
3204         * GNUmakefile.am:
3205         * JavaScriptCore.gypi:
3206         * JavaScriptCore.pri:
3207         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3208         * JavaScriptCore.xcodeproj/project.pbxproj:
3209         * jit/JITPropertyAccess.cpp:
3210         * jit/JITPropertyAccess32_64.cpp: Added.
3211         (JSC::JIT::emit_op_put_by_index):
3212         (JSC::JIT::emit_op_put_getter):
3213         (JSC::JIT::emit_op_put_setter):
3214         (JSC::JIT::emit_op_del_by_id):
3215         (JSC::JIT::emit_op_method_check):
3216         (JSC::JIT::emitSlow_op_method_check):
3217         (JSC::JIT::emit_op_get_by_val):
3218         (JSC::JIT::emitSlow_op_get_by_val):
3219         (JSC::JIT::emit_op_put_by_val):
3220         (JSC::JIT::emitSlow_op_put_by_val):
3221         (JSC::JIT::emit_op_get_by_id):
3222         (JSC::JIT::emitSlow_op_get_by_id):
3223         (JSC::JIT::emit_op_put_by_id):
3224         (JSC::JIT::emitSlow_op_put_by_id):
3225         (JSC::JIT::compileGetByIdHotPath):
3226         (JSC::JIT::compileGetByIdSlowCase):
3227         (JSC::JIT::compilePutDirectOffset):
3228         (JSC::JIT::compileGetDirectOffset):
3229         (JSC::JIT::testPrototype):
3230         (JSC::JIT::privateCompilePutByIdTransition):
3231         (JSC::JIT::patchGetByIdSelf):
3232         (JSC::JIT::patchMethodCallProto):
3233         (JSC::JIT::patchPutByIdReplace):
3234         (JSC::JIT::privateCompilePatchGetArrayLength):
3235         (JSC::JIT::privateCompileGetByIdProto):
3236         (JSC::JIT::privateCompileGetByIdSelfList):
3237         (JSC::JIT::privateCompileGetByIdProtoList):
3238         (JSC::JIT::privateCompileGetByIdChainList):
3239         (JSC::JIT::privateCompileGetByIdChain):
3240         (JSC::JIT::emit_op_get_by_pname):
3241         (JSC::JIT::emitSlow_op_get_by_pname):
3242
3243 2010-02-19  Patrick Gansterer  <paroga@paroga.com>
3244
3245         Reviewed by Laszlo Gombos.
3246
3247         Added additional parameter to create_rvct_stubs 
3248         for setting the regularexpression prefix.
3249         Renamed it because it now works for other platforms too.
3250         https://bugs.webkit.org/show_bug.cgi?id=34951
3251
3252         * DerivedSources.pro:
3253         * create_jit_stubs: Copied from JavaScriptCore/create_rvct_stubs.
3254         * create_rvct_stubs: Removed.
3255
3256 2010-02-18  Oliver Hunt  <oliver@apple.com>
3257
3258         Reviewed by Gavin Barraclough.
3259
3260         Improve interpreter getter performance
3261         https://bugs.webkit.org/show_bug.cgi?id=35138
3262
3263         Improve the performance of getter dispatch by making it possible
3264         for the interpreter to cache the GetterSetter object lookup.
3265
3266         To do this we simply need to make PropertySlot aware of getters
3267         as a potentially cacheable property, and record the base and this
3268         objects for a getter access.  This allows us to use more-or-less
3269         identical code to that used by the normal get_by_id caching, with
3270         the dispatch being the only actual difference.
3271
3272         I'm holding off of implementing this in the JIT until I do some
3273         cleanup to try and making coding in the JIT not be as horrible
3274         as it is currently.
3275
3276         * bytecode/CodeBlock.cpp:
3277         (JSC::CodeBlock::dump):
3278         (JSC::CodeBlock::derefStructures):
3279         (JSC::CodeBlock::refStructures):
3280         * bytecode/Opcode.h:
3281         * interpreter/Interpreter.cpp:
3282         (JSC::Interpreter::resolveGlobal):
3283         (JSC::Interpreter::tryCacheGetByID):
3284         (JSC::Interpreter::privateExecute):
3285         * jit/JIT.cpp:
3286         (JSC::JIT::privateCompileMainPass):
3287         * jit/JITStubs.cpp:
3288         (JSC::JITThunks::tryCacheGetByID):
3289         (JSC::DEFINE_STUB_FUNCTION):
3290         * runtime/JSObject.cpp:
3291         (JSC::JSObject::fillGetterPropertySlot):
3292         * runtime/PropertySlot.cpp:
3293         (JSC::PropertySlot::functionGetter):
3294         * runtime/PropertySlot.h:
3295         (JSC::PropertySlot::isGetter):
3296         (JSC::PropertySlot::isCacheable):
3297         (JSC::PropertySlot::isCacheableValue):
3298         (JSC::PropertySlot::setValueSlot):
3299         (JSC::PropertySlot::setGetterSlot):
3300         (JSC::PropertySlot::setCacheableGetterSlot):
3301         (JSC::PropertySlot::clearOffset):
3302         (JSC::PropertySlot::thisValue):
3303
3304 2010-02-17  Geoffrey Garen  <ggaren@apple.com>
3305
3306         Reviewed by Oliver Hunt.
3307
3308         Fixed a portion of:
3309         <rdar://problem/7165917> | https://bugs.webkit.org/show_bug.cgi?id=28676
3310         Safari 4 does not release memory back to the operating system fast enough (28676)
3311         
3312         This patch fixes a surprisingly common edge case in which the page heap
3313         would have only one free span, but that span would be larger than the
3314         minimum free size, so we would decide not to free it, even though it
3315         could be as large as 100MB or more!
3316         
3317         SunSpider reports no change on Mac or Windows.
3318
3319         * wtf/FastMalloc.cpp:
3320         (WTF::TCMalloc_PageHeap::scavenge): Call shouldContinueScavenging() instead
3321         of doing the math ourselves. Don't keep a local value for pagesDecommitted
3322         because that lets free_committed_pages_ be wrong temporarily. Instead,
3323         update free_committed_pages_ as we go. ASSERT that we aren't releasing
3324         a span that has already been released, because we think this is impossible.
3325         Finally, don't be afraid to release all free memory in the page heap when
3326         scavenging. We only scavenge after 5 seconds of the application's working
3327         set not growing, and we keep both thread caches and a central cache on
3328         top of the page heap, so the extra free pages in the page heap were just
3329         overkill.
3330
3331 2010-02-17  Gavin Barraclough  <barraclough@apple.com>
3332
3333         Reviewed by Oliver Hunt.
3334
3335         https://bugs.webkit.org/show_bug.cgi?id=35070
3336         Addition of 2 strings of length 2^31 may result in a string of length 0.
3337
3338         Check for overflow when creating a new JSString as a result of an addition
3339         or concatenation, throw an out of memory exception.
3340
3341         * runtime/JSString.h:
3342         (JSC::):
3343         * runtime/Operations.h:
3344         (JSC::jsString):
3345
3346 2010-02-17  Xan Lopez  <xlopez@igalia.com>
3347
3348         Reviewed by Gustavo Noronha.
3349
3350         [Linux] Webkit incompatible with Java plugins
3351         https://bugs.webkit.org/show_bug.cgi?id=24912
3352
3353         Add support for GFile to GOwnPtr.
3354
3355         Based on original work by Gustavo Noronha.
3356
3357         * wtf/gtk/GOwnPtr.cpp:
3358         (WTF::GFile):
3359         * wtf/gtk/GOwnPtr.h:
3360
3361 2010-02-16  Gavin Barraclough  <barraclough@apple.com>
3362
3363         Reviewed by Mark Rowe.
3364
3365         Fix a handful of other leaks seen on the buildbot.
3366
3367         * runtime/UStringImpl.h:
3368         (JSC::UStringOrRopeImpl::deref): Delegate through to the subclass version of deref to ensure that
3369         the correct cleanup takes place.  This function previously featured some code that attempted to
3370         skip deletion of static UStringImpl's.  Closer inspection revealed that it was in fact equivalent
3371         to "if (false)", meaning that UStringImpl's which had their final deref performed via this function
3372         were leaked.
3373
3374 2010-02-16  Mark Rowe  <mrowe@apple.com>
3375
3376         Reviewed by Gavin Barraclough.
3377
3378         Fix a handful of leaks seen on the buildbot.
3379
3380         * runtime/UStringImpl.h:
3381         (JSC::UStringOrRopeImpl::deref): Call URopeImpl::destructNonRecursive rather than delete
3382         to ensure that the rope's fibers are also destroyed.
3383
3384 2010-02-16  Gavin Barraclough  <barraclough@apple.com>
3385
3386         Reviewed by Oliver Hunt.
3387
3388         https://bugs.webkit.org/show_bug.cgi?id=34964
3389         Leaks tool reports false memory leaks due to Rope implementation.
3390
3391         A rope is a recursive data structure where each node in the rope holds a set of
3392         pointers, each of which may reference either a string (in UStringImpl form) or
3393         another rope node.  A low bit in each pointer is used to distinguish between
3394         rope & string elements, in a fashion similar to the recently-removed
3395         PtrAndFlags class (see https://bugs.webkit.org/show_bug.cgi?id=33731 ).  Again,
3396         this causes a problem for Leaks - refactor to remove the magic pointer
3397         mangling.
3398
3399         Move Rope out from JSString.h and rename to URopeImpl, to match UStringImpl.
3400         Give UStringImpl and URopeImpl a common parent class, UStringOrRopeImpl.
3401         Repurpose an otherwise invalid permutation to flags (static & should report
3402         memory cost) to identify ropes.
3403
3404         This allows us to change the rope's fibers to interrogate the object rather
3405         than storing a bool within the low bits of the pointer (or in some cases the
3406         use of a common parent class removes the need to determine the type at all -
3407         there is a common interface to ref or get the length of either ropes or strings).
3408
3409         * API/JSClassRef.cpp:
3410         (OpaqueJSClass::OpaqueJSClass):
3411         (OpaqueJSClassContextData::OpaqueJSClassContextData):
3412         * bytecompiler/BytecodeGenerator.cpp:
3413         (JSC::keyForCharacterSwitch):
3414         * interpreter/Interpreter.cpp:
3415         (JSC::Interpreter::privateExecute):
3416         * jit/JITStubs.cpp:
3417         (JSC::DEFINE_STUB_FUNCTION):
3418         * runtime/ArrayPrototype.cpp:
3419         (JSC::arrayProtoFuncToString):
3420         * runtime/Identifier.cpp:
3421         (JSC::Identifier::equal):
3422         (JSC::Identifier::addSlowCase):
3423         * runtime/JSString.cpp:
3424         (JSC::JSString::resolveRope):
3425         * runtime/JSString.h:
3426         (JSC::):
3427         (JSC::RopeBuilder::JSString):
3428         (JSC::RopeBuilder::~JSString):
3429         (JSC::RopeBuilder::appendStringInConstruct):
3430         (JSC::RopeBuilder::appendValueInConstructAndIncrementLength):
3431         (JSC::RopeBuilder::JSStringFinalizerStruct::JSStringFinalizerStruct):
3432         (JSC::RopeBuilder::JSStringFinalizerStruct::):
3433         * runtime/UString.cpp:
3434         (JSC::UString::toStrictUInt32):
3435         (JSC::equal):
3436         * runtime/UString.h:
3437         (JSC::UString::isEmpty):
3438         (JSC::UString::size):
3439         * runtime/UStringImpl.cpp:
3440         (JSC::URopeImpl::derefFibersNonRecursive):
3441         (JSC::URopeImpl::destructNonRecursive):
3442         * runtime/UStringImpl.h:
3443         (JSC::UStringOrRopeImpl::isRope):
3444         (JSC::UStringOrRopeImpl::length):
3445         (JSC::UStringOrRopeImpl::ref):
3446         (JSC::UStringOrRopeImpl::):
3447         (JSC::UStringOrRopeImpl::operator new):
3448         (JSC::UStringOrRopeImpl::UStringOrRopeImpl):
3449         (JSC::UStringImpl::adopt):
3450         (JSC::UStringImpl::createUninitialized):
3451         (JSC::UStringImpl::tryCreateUninitialized):
3452         (JSC::UStringImpl::data):
3453         (JSC::UStringImpl::cost):
3454         (JSC::UStringImpl::deref):
3455         (JSC::UStringImpl::UStringImpl):
3456         (JSC::UStringImpl::):
3457         (JSC::URopeImpl::tryCreateUninitialized):
3458         (JSC::URopeImpl::initializeFiber):
3459         (JSC::URopeImpl::fiberCount):
3460         (JSC::URopeImpl::fibers):
3461         (JSC::URopeImpl::deref):
3462         (JSC::URopeImpl::URopeImpl):
3463         (JSC::URopeImpl::hasOneRef):
3464         (JSC::UStringOrRopeImpl::deref):
3465
3466 2010-02-15  Gabor Loki  <loki@webkit.org>
3467
3468         Reviewed by Gavin Barraclough.
3469
3470         Fix the SP at ctiOpThrowNotCaught on Thumb2 (JSVALUE32)
3471         https://bugs.webkit.org/show_bug.cgi?id=34939
3472
3473         * jit/JITStubs.cpp:
3474
3475 2010-02-15  Gavin Barraclough  <barraclough@apple.com>
3476
3477         Reviewed by NOBODY (Build Fix!).
3478
3479         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3480
3481 2010-02-15  Gavin Barraclough  <barraclough@apple.com>
3482
3483         Reviewed by Oliver Hunt.
3484
3485         Some general Rope related refactoring.
3486
3487         Rename Rope::m_ropeLength to m_fiberCount, to be more descriptive.
3488         Rename Rope::m_stringLength to simply m_length (since this is the
3489         more conventional name for the length of a string).  Move append
3490         behaviour out into a new RopeBuilder class, so that Rope no longer
3491         needs any knowledge of the JSString or UString implementation.
3492
3493         Make Rope no longer be nested within JSString.
3494         (Rope now no-longer need reside within JSString.h, but leaving
3495         the change of moving this out to a different header as a separate
3496         change from these renames).
3497
3498         * JavaScriptCore.exp:
3499         * jit/JITOpcodes.cpp:
3500         (JSC::JIT::privateCompileCTIMachineTrampolines):
3501         * runtime/JSString.cpp:
3502         (JSC::Rope::destructNonRecursive):
3503         (JSC::Rope::~Rope):
3504         (JSC::JSString::resolveRope):
3505         (JSC::JSString::toBoolean):
3506         (JSC::JSString::getStringPropertyDescriptor):
3507         * runtime/JSString.h:
3508         (JSC::Rope::Fiber::Fiber):
3509         (JSC::Rope::Fiber::deref):
3510         (JSC::Rope::Fiber::ref):
3511         (JSC::Rope::Fiber::refAndGetLength):
3512         (JSC::Rope::Fiber::isRope):
3513         (JSC::Rope::Fiber::rope):
3514         (JSC::Rope::Fiber::isString):
3515         (JSC::Rope::Fiber::string):
3516         (JSC::Rope::Fiber::nonFiber):
3517         (JSC::Rope::tryCreateUninitialized):
3518         (JSC::Rope::append):
3519         (JSC::Rope::fiberCount):
3520         (JSC::Rope::length):
3521         (JSC::Rope::fibers):
3522         (JSC::Rope::Rope):
3523         (JSC::Rope::operator new):
3524         (JSC::):
3525         (JSC::RopeBuilder::JSString):
3526         (JSC::RopeBuilder::~JSString):
3527         (JSC::RopeBuilder::length):
3528         (JSC::RopeBuilder::canGetIndex):
3529         (JSC::RopeBuilder::appendStringInConstruct):
3530         (JSC::RopeBuilder::appendValueInConstructAndIncrementLength):
3531         (JSC::RopeBuilder::isRope):
3532         (JSC::RopeBuilder::fiberCount):
3533         (JSC::JSString::getStringPropertySlot):
3534         * runtime/Operations.h:
3535         (JSC::jsString):
3536
3537 2010-02-15  Gavin Barraclough  <barraclough@apple.com>
3538
3539         Reviewed by NOBODY (Build fix).
3540
3541         Add missing cast for !YARR (PPC) builds.
3542
3543         * runtime/RegExp.cpp:
3544         (JSC::RegExp::match):
3545
3546 2010-02-14  Gavin Barraclough  <barraclough@apple.com>
3547
3548         Reviewed by Darin Adler.
3549
3550         https://bugs.webkit.org/show_bug.cgi?id=33731
3551         Many false leaks in release builds due to PtrAndFlags
3552
3553         StructureTransitionTable was effectively a smart pointer type,
3554         one machine word in size and wholly contained as a member of
3555         of Structure.  It either pointed to an actual table, or could
3556         be used to describe a single transtion entry without use of a
3557         table.
3558
3559         This, however, worked by using a PtrAndFlags, which is not
3560         compatible with the leaks tool.  Since there is no clear way to
3561         obtain another bit for 'free' here, and since there are bits
3562         available up in Structure, merge this functionality back up into
3563         Structure.  Having this in a separate class was quite clean
3564         from an enacapsulation perspective, but this solution doesn't