942e4de2e46672434bc13cf0f87542a359d3f59b
[WebKit-https.git] / JavaScriptCore / ChangeLog
1 2010-04-29  Oliver Hunt  <oliver@apple.com>
2
3         Reviewed by Geoff Garen.
4
5         Hoist JSVALUE32_64 arithmetic implementations into a separate file.
6
7         * GNUmakefile.am:
8         * JavaScriptCore.gypi:
9         * JavaScriptCore.pro:
10         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
11         * JavaScriptCore.xcodeproj/project.pbxproj:
12         * jit/JITArithmetic.cpp:
13         (JSC::JIT::emitSlow_op_jnless):
14         (JSC::JIT::emitSlow_op_jless):
15         (JSC::JIT::emitSlow_op_jnlesseq):
16         (JSC::JIT::emit_op_mod):
17         (JSC::JIT::compileBinaryArithOpSlowCase):
18         (JSC::JIT::emit_op_div):
19         (JSC::JIT::compileBinaryArithOp):
20         * jit/JITArithmetic32_64.cpp: Added.
21         (JSC::JIT::emit_op_negate):
22         (JSC::JIT::emitSlow_op_negate):
23         (JSC::JIT::emit_op_jnless):
24         (JSC::JIT::emitSlow_op_jnless):
25         (JSC::JIT::emit_op_jless):
26         (JSC::JIT::emitSlow_op_jless):
27         (JSC::JIT::emit_op_jnlesseq):
28         (JSC::JIT::emitSlow_op_jnlesseq):
29         (JSC::JIT::emit_op_lshift):
30         (JSC::JIT::emitSlow_op_lshift):
31         (JSC::JIT::emit_op_rshift):
32         (JSC::JIT::emitSlow_op_rshift):
33         (JSC::JIT::emit_op_bitand):
34         (JSC::JIT::emitSlow_op_bitand):
35         (JSC::JIT::emit_op_bitor):
36         (JSC::JIT::emitSlow_op_bitor):
37         (JSC::JIT::emit_op_bitxor):
38         (JSC::JIT::emitSlow_op_bitxor):
39         (JSC::JIT::emit_op_bitnot):
40         (JSC::JIT::emitSlow_op_bitnot):
41         (JSC::JIT::emit_op_post_inc):
42         (JSC::JIT::emitSlow_op_post_inc):
43         (JSC::JIT::emit_op_post_dec):
44         (JSC::JIT::emitSlow_op_post_dec):
45         (JSC::JIT::emit_op_pre_inc):
46         (JSC::JIT::emitSlow_op_pre_inc):
47         (JSC::JIT::emit_op_pre_dec):
48         (JSC::JIT::emitSlow_op_pre_dec):
49         (JSC::JIT::emit_op_add):
50         (JSC::JIT::emitAdd32Constant):
51         (JSC::JIT::emitSlow_op_add):
52         (JSC::JIT::emit_op_sub):
53         (JSC::JIT::emitSub32Constant):
54         (JSC::JIT::emitSlow_op_sub):
55         (JSC::JIT::emitBinaryDoubleOp):
56         (JSC::JIT::emit_op_mul):
57         (JSC::JIT::emitSlow_op_mul):
58         (JSC::JIT::emit_op_div):
59         (JSC::JIT::emitSlow_op_div):
60         (JSC::JIT::emit_op_mod):
61         (JSC::JIT::emitSlow_op_mod):
62
63 2010-04-29  Zoltan Herczeg  <zherczeg@webkit.org>
64
65         Reviewed by Oliver Hunt
66
67         Add sqrt() instruction support for ARM assembler (using VFP)
68         https://bugs.webkit.org/show_bug.cgi?id=38312
69
70         * assembler/ARMAssembler.h:
71         (JSC::ARMAssembler::):
72         (JSC::ARMAssembler::fsqrtd_r):
73         * assembler/MacroAssemblerARM.h:
74         (JSC::MacroAssemblerARM::supportsFloatingPointSqrt):
75         (JSC::MacroAssemblerARM::sqrtDouble):
76
77 2010-04-29  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
78
79         Reviewed by Simon Hausmann.
80
81         [Qt] Refactor qtscriptglobal.h
82         https://bugs.webkit.org/show_bug.cgi?id=37953
83
84         Use the same pattern in qtscriptglobal.h as in 
85         qwebkitglobal.h without checking for specific OSs.
86
87         * qt/api/qtscriptglobal.h:
88
89 2010-04-29  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
90
91         Reviewed by Simon Hausmann.
92
93         Small cleanup.
94
95         QScriptValuePrivate constructor shouldn't take QScriptEngine pointer
96         as a parameter, because it breaks a private / public separation rule.
97         QScriptEnginePrivate::get(QScriptEngine*) should return
98         a QScriptEnginePrivate pointer instead of a QScriptEnginePtr, it simplifies
99         implementation.
100
101         [Qt] QScriptValuePrivate class needs some cleanup.
102         https://bugs.webkit.org/show_bug.cgi?id=37729
103
104         * qt/api/qscriptengine_p.h:
105         (QScriptEnginePrivate::get):
106         * qt/api/qscriptvalue.cpp:
107         (QScriptValue::QScriptValue):
108         * qt/api/qscriptvalue_p.h:
109         (QScriptValuePrivate::QScriptValuePrivate):
110
111 2010-04-29  Kwang Yul Seo  <skyul@company100.net>
112
113         Reviewed by Simon Hausmann.
114
115         [WINCE] Export g_stackBase with JS_EXPORTDATA
116         https://bugs.webkit.org/show_bug.cgi?id=37437
117
118         Export g_stackBase with JS_EXPORTDATA as it is used by SharedTimerWince.cpp.
119
120         * runtime/Collector.cpp:
121
122 2010-04-28  Oliver Hunt  <oliver@apple.com>
123
124         Do an unordered compare so that we don't treat NaN incorrectly.
125
126         RS=Gavin Barraclough
127
128         * jit/ThunkGenerators.cpp:
129         (JSC::powThunkGenerator):
130
131 2010-04-28  Oliver Hunt  <oliver@apple.com>
132
133         Reviewed by Gavin Barraclough.
134
135         Add fast paths for Math.pow and Math.sqrt
136         https://bugs.webkit.org/show_bug.cgi?id=38294
137
138         Add specialized thunks for Math.pow and Math.sqrt.
139         This requires adding a sqrtDouble function to the MacroAssembler
140         and sqrtsd to the x86 assembler.
141
142         Math.pow is slightly more complicated, in that we have
143         to implement exponentiation ourselves rather than relying
144         on hardware support.  The inline exponentiation is restricted
145         to positive integer exponents on a numeric base.  Exponentiation
146         is finally performed through the "Exponentiation by Squaring"
147         algorithm.
148
149         * assembler/AbstractMacroAssembler.h:
150         (JSC::AbstractMacroAssembler::ImmPtr::ImmPtr):
151         * assembler/MacroAssemblerARM.h:
152         (JSC::MacroAssemblerARM::supportsFloatingPointSqrt):
153         (JSC::MacroAssemblerARM::loadDouble):
154         (JSC::MacroAssemblerARM::sqrtDouble):
155         * assembler/MacroAssemblerARMv7.h:
156         (JSC::MacroAssemblerARMv7::supportsFloatingPointSqrt):
157         (JSC::MacroAssemblerARMv7::sqrtDouble):
158         * assembler/MacroAssemblerX86.h:
159         (JSC::MacroAssemblerX86::loadDouble):
160         (JSC::MacroAssemblerX86::supportsFloatingPointSqrt):
161         * assembler/MacroAssemblerX86Common.h:
162         (JSC::MacroAssemblerX86Common::sqrtDouble):
163         * assembler/MacroAssemblerX86_64.h:
164         (JSC::MacroAssemblerX86_64::loadDouble):
165         (JSC::MacroAssemblerX86_64::supportsFloatingPointSqrt):
166         * assembler/X86Assembler.h:
167         (JSC::X86Assembler::):
168         (JSC::X86Assembler::movsd_mr):
169         (JSC::X86Assembler::sqrtsd_rr):
170         (JSC::X86Assembler::X86InstructionFormatter::twoByteOp):
171         (JSC::X86Assembler::X86InstructionFormatter::memoryModRM):
172         * create_hash_table:
173         * jit/JIT.h:
174         * jit/JITInlineMethods.h:
175         * jit/JITOpcodes.cpp:
176         * jit/JITStubs.h:
177         (JSC::JITThunks::ctiNativeCallThunk):
178         * jit/JSInterfaceJIT.h:
179         (JSC::JSInterfaceJIT::emitLoadDouble):
180         (JSC::JSInterfaceJIT::emitJumpIfImmediateNumber):
181         (JSC::JSInterfaceJIT::emitJumpIfNotImmediateNumber):
182         (JSC::JSInterfaceJIT::emitLoadInt32):
183         * jit/SpecializedThunkJIT.h:
184         (JSC::SpecializedThunkJIT::loadDoubleArgument):
185         (JSC::SpecializedThunkJIT::loadInt32Argument):
186         (JSC::SpecializedThunkJIT::returnJSValue):
187         (JSC::SpecializedThunkJIT::returnDouble):
188         (JSC::SpecializedThunkJIT::finalize):
189         * jit/ThunkGenerators.cpp:
190         (JSC::sqrtThunkGenerator):
191         (JSC::powThunkGenerator):
192         * jit/ThunkGenerators.h:
193         * runtime/Executable.h:
194         (JSC::NativeExecutable::NativeExecutable):
195         * runtime/JSFunction.cpp:
196         (JSC::JSFunction::JSFunction):
197
198 2010-04-28  Mike Thole  <mthole@apple.com>
199
200         Reviewed by Mark Rowe.
201
202         Reenable WTF_USE_PROTECTION_SPACE_AUTH_CALLBACK now that an
203         exports file for it has been added.
204
205         * wtf/Platform.h:
206
207 2010-04-28  Mike Thole  <mthole@apple.com>
208
209         Build fix, not reviewed.
210
211         * wtf/Platform.h:
212         Disable WTF_USE_PROTECTION_SPACE_AUTH_CALLBACK until an exports file is created.
213
214 2010-04-28  Mike Thole  <mthole@apple.com>
215
216         Reviewed by David Kilzer.
217
218         Add canAuthenticateAgainstProtectionSpace() to frame loader so that a protection space 
219         can be inspected before attempting to authenticate against it
220         https://bugs.webkit.org/show_bug.cgi?id=38271
221
222         * wtf/Platform.h: Add WTF_USE_PROTECTION_SPACE_AUTH_CALLBACK define.
223
224 2010-04-28  Darin Adler  <darin@apple.com>
225
226         Reviewed by Sam Weinig.
227
228         Don't use CFAbsoluteTimeGetCurrent on Mac OS X, since it's just a cover
229         for gettimeofday anyway.
230
231         * wtf/CurrentTime.cpp:
232         (WTF::currentTime): Remove the CF version of this. Change the "other POSIX"
233         version to pass 0 for the time zone instead of ignoring a return value.
234         Also get rid of unneeded type casts, since operations involving both
235         integers and doubles are always evaluated as doubles in C without explicit
236         type casting.
237
238 2010-04-28  Darin Fisher  <darin@chromium.org>
239
240         Reviewed by David Levin.
241
242         [Chromium] callOnMainThread should equate to MessageLoop::PostTask
243         https://bugs.webkit.org/show_bug.cgi?id=38276
244
245         * JavaScriptCore.gyp/JavaScriptCore.gyp:
246         * wtf/MainThread.cpp:
247         * wtf/chromium/ChromiumThreading.h:
248         * wtf/chromium/MainThreadChromium.cpp:
249         (WTF::initializeMainThread):
250         (WTF::callOnMainThread):
251         (WTF::callOnMainThreadAndWait):
252         (WTF::setMainThreadCallbacksPaused):
253         (WTF::isMainThread):
254
255 2010-04-28  Simon Hausmann  <simon.hausmann@nokia.com>, Kent Hansen <kent.hansen@nokia.com>
256
257         Reviewed by Darin Adler.
258
259         JSC's currentThreadStackBase is not reentrant on some platforms
260         https://bugs.webkit.org/show_bug.cgi?id=37195
261
262         This function needs to be reentrant to avoid memory corruption on platforms where
263         the implementation uses global variables.
264
265         This patch adds a mutex lock where necessary and makes the Symbian implementation
266         reentrant.
267
268         * runtime/Collector.cpp:
269         (JSC::currentThreadStackBaseMutex):
270         (JSC::currentThreadStackBase):
271
272 2010-04-28  Thiago Macieira <thiago.macieira@nokia.com>
273
274         Reviewed by Simon Hausmann.
275
276         Fix compilation with gcc 3.4.
277
278         AtomicStringImpl.h:29: error: base `WebCore::StringImpl' with only
279         non-default constructor in class without a constructor
280
281         * wtf/text/AtomicStringImpl.h:
282         (WebCore::AtomicStringImpl::AtomicStringImpl): Provide a default constructor.
283         * wtf/text/StringImpl.h: Allow AtomicStringImpl to call a StringImpl constructor through a friend declaration.
284
285 2010-04-27  Stephanie Lewis  <slewis@apple.com>
286
287         Fix Tiger build.
288
289         * wtf/FastMalloc.cpp:
290         (WTF::TCMalloc_PageHeap::Carve):
291
292 2010-04-26  Stephanie Lewis  <slewis@apple.com>
293
294         Reviewed by Geoff Garen.
295
296         https://bugs.webkit.org/show_bug.cgi?id=38154 FastMalloc calls madvise too often.
297         <rdar://problem/7834433> REGRESSSION: 1.5% PLT regression due to 56028 (return memory quicker).  
298         To save on madvise calls when recommitting memory recommit the entire span and then carve it
299         instead of carving the span up and only committing the part that will be used immediately.
300
301         * wtf/FastMalloc.cpp:
302         (WTF::TCMalloc_PageHeap::New):
303         (WTF::TCMalloc_PageHeap::AllocLarge):
304         (WTF::TCMalloc_PageHeap::Carve):
305
306 2010-04-26  Oliver Hunt  <oliver@apple.com>
307
308         Reviewed by Maciej Stachowiak.
309
310         Add specialized thunks for a char code related string functions
311         https://bugs.webkit.org/show_bug.cgi?id=38177
312
313         This is a simple extension to my prior patch.  Basically hoist the
314         existing character loading logic from the charCodeAt thunk and into
315         a helper function, then add a helper to load strings from the small
316         string cache.  This allows trivial implementations of fromCharCode
317         and charAt. 
318
319         * create_hash_table:
320         * jit/SpecializedThunkJIT.h:
321         (JSC::SpecializedThunkJIT::returnJSCell):
322         (JSC::SpecializedThunkJIT::tagReturnAsJSCell):
323         * jit/ThunkGenerators.cpp:
324         (JSC::stringCharLoad):
325         (JSC::charToString):
326         (JSC::charCodeAtThunkGenerator):
327         (JSC::charAtThunkGenerator):
328         (JSC::fromCharCodeThunkGenerator):
329         * jit/ThunkGenerators.h:
330         * runtime/SmallStrings.h:
331         (JSC::SmallStrings::singleCharacterStrings):
332         * runtime/StringConstructor.cpp:
333         (JSC::StringConstructor::StringConstructor):
334
335 2010-04-27  Thomas Zander <t.zander@nokia.com>
336
337         Reviewed by Simon Hausmann.
338
339         [Qt] Fix the build on Symbian on Linux using the Makefile based mkspec
340
341         * JavaScriptCore.pri: It is necessary to specify the library search path
342         when linking against JavaScriptCore.
343
344 2010-04-21  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
345
346         Reviewed by Simon Hausmann.
347
348         Compile fix for Visual Studio 2010
349         https://bugs.webkit.org/show_bug.cgi?id=37867
350
351         Patch by Prasanth Ullattil <prasanth.ullattil@nokia.com>
352
353         * runtime/Structure.cpp:
354         (JSC::Structure::transitionTableAdd):
355         * wtf/MathExtras.h:
356         * wtf/Platform.h:
357
358 2010-04-27  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
359
360         Reviewed by Simon Hausmann.
361
362         Rename COMPILER(MSVC7) to COMPILER(MSVC7_OR_LOWER)
363
364         * config.h:
365         (JSC::Structure::transitionTableAdd):
366         * wtf/Assertions.h:
367         * wtf/Atomics.h:
368         * wtf/CurrentTime.h:
369         (WTF::getLocalTime):
370         * wtf/Platform.h:
371         * wtf/StaticConstructors.h:
372         * wtf/StringExtras.h:
373         * wtf/Vector.h:
374         (WTF::::append):
375
376 2010-04-15  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
377
378         Reviewed by Tor Arne Vestbø.
379
380         [Qt] Fix Mac build break.
381
382         https://bugs.webkit.org/show_bug.cgi?id=37867
383         - Make sure JavaScriptCore's debug_and_release config follows that
384           of WebCore.
385         - Use different name for JavaScriptCore target in debug and release
386           since they might be written in the same path at the same time on
387           parallel builds
388         - Consolidate the DESTDIR determination logic in JavaScriptCore.pri
389
390         * JavaScriptCore.pri:
391         * JavaScriptCore.pro:
392
393 2010-04-21  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
394
395         Reviewed by Kenneth Rohde Christiansen.
396
397         [Qt] Make sure WebKit is not compiled using C++0x.
398         https://bugs.webkit.org/show_bug.cgi?id=37867
399
400         As the rest of Qt compiles in the C++0x mode, people might start
401         compiling it in this mode. WebKit don't support this yet.
402
403         Patch by Thiago Macieira <thiago.macieira@nokia.com>
404
405         * JavaScriptCore.pro:
406
407 2010-04-26  Oliver Hunt  <oliver@apple.com>
408
409         Fix windows
410
411         * jit/SpecializedThunkJIT.h:
412         (JSC::SpecializedThunkJIT::argumentToVirtualRegister):
413
414 2010-04-26  Oliver Hunt  <oliver@apple.com>
415
416         Reviewed by Gavin Barraclough.
417
418         Need to support more efficient dispatch of lightweight builtins
419         https://bugs.webkit.org/show_bug.cgi?id=38155
420
421         The problem with calling lightweight builtins is that marshalling
422         the call from the nitro calling convention to the system calling
423         convention is very expensive relative to the cost of the actually
424         evaluating the function.  To work around this problem this patch
425         adds the ability to define a custom thunk for a builtin.
426
427         This allows us to use high performance custom implementations of
428         the common and sensible versions of simple builtins.  This patch
429         includes a simple (use of which is currently hardcoded) thunk for
430         charCodeAt.
431
432         This adds a JSInterfaceJIT subclass called SpecializedThunkJIT
433         that has helper functions to remove (or at least reduce) the need
434         to have separate thunk implementations for each JSValue encoding.
435
436         * GNUmakefile.am:
437         * JavaScriptCore.pro:
438         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
439         * JavaScriptCore.xcodeproj/project.pbxproj:
440           Many project file updates
441
442         * create_hash_table:
443           Add thunk generation callbacks to the hash tables, currently
444           we hardcode the script to only support charCodeAt
445
446         * jit/JITStubCall.h:
447         * jit/JITStubs.cpp:
448         (JSC::JITThunks::~JITThunks):
449         (JSC::JITThunks::specializedThunk):
450         * jit/JITStubs.h:
451         * jit/SpecializedThunkJIT.h: Added.
452         (JSC::SpecializedThunkJIT::SpecializedThunkJIT):
453         (JSC::SpecializedThunkJIT::loadCellArgument):
454         (JSC::SpecializedThunkJIT::loadJSStringArgument):
455         (JSC::SpecializedThunkJIT::loadInt32Argument):
456         (JSC::SpecializedThunkJIT::appendFailure):
457         (JSC::SpecializedThunkJIT::returnInt32):
458         (JSC::SpecializedThunkJIT::finalize):
459         (JSC::SpecializedThunkJIT::argumentToVirtualRegister):
460         (JSC::SpecializedThunkJIT::tagReturnAsInt32):
461         * jit/ThunkGenerators.cpp: Added.
462         (JSC::ThunkHelpers::stringImplDataOffset):
463         (JSC::ThunkHelpers::jsStringLengthOffset):
464         (JSC::ThunkHelpers::jsStringValueOffset):
465         (JSC::charCodeAtThunkGenerator):
466         * jit/ThunkGenerators.h: Added.
467         * runtime/Executable.h:
468         (JSC::NativeExecutable::NativeExecutable):
469         * runtime/JSFunction.cpp:
470         (JSC::JSFunction::JSFunction):
471         * runtime/JSFunction.h:
472         * runtime/JSGlobalData.h:
473         (JSC::JSGlobalData::getThunk):
474         * runtime/JSString.h:
475         (JSC::):
476         * runtime/JSValue.h:
477           Protect some of the JSVALUE32 and JSVALUE32_64 only constants
478           and function behind appropriate USE() guards to make it harder
479           to use the wrong flags for the target build.
480         * runtime/Lookup.cpp:
481         (JSC::HashTable::createTable):
482         (JSC::setUpStaticFunctionSlot):
483         * runtime/Lookup.h:
484         (JSC::HashEntry::initialize):
485         (JSC::HashEntry::generator):
486         (JSC::HashEntry::):
487           Make the lookup tables use a specialized thunkGenerator
488           if present
489         * wtf/text/StringImpl.h:
490
491 2010-04-26  Oliver Hunt  <oliver@apple.com>
492
493         Build fix
494
495         * runtime/JSImmediate.h:
496         * runtime/JSValue.h:
497
498 2010-04-26  Oliver Hunt  <oliver@apple.com>
499
500         Reviewed by Gavin Barraclough.
501
502         Factor some basic JS interface logic out of JIT and into a superclass
503         https://bugs.webkit.org/show_bug.cgi?id=38163
504
505         Create JSInterfaceJIT to hold some common low level functions for
506         interacting with the JS RegisterFile.  Doing this separately from
507         https://bugs.webkit.org/show_bug.cgi?id=38155 to ease reviewing.
508
509         * JavaScriptCore.xcodeproj/project.pbxproj:
510         * jit/JIT.h:
511         * jit/JITInlineMethods.h:
512         (JSC::JIT::emitJumpSlowCaseIfNotJSCell):
513         * jit/JSInterfaceJIT.h: Added.
514         (JSC::JSInterfaceJIT::emitLoadJSCell):
515         (JSC::JSInterfaceJIT::emitJumpIfNotJSCell):
516         (JSC::JSInterfaceJIT::emitLoadInt32):
517         (JSC::JSInterfaceJIT::tagFor):
518         (JSC::JSInterfaceJIT::payloadFor):
519         (JSC::JSInterfaceJIT::addressFor):
520
521 2010-04-26  Sam Weinig  <sam@webkit.org>
522
523         Fix Tiger build.
524
525         * wtf/mac/MainThreadMac.mm:
526         (WTF::isMainThread):
527
528 2010-04-26  Geoffrey Garen  <ggaren@apple.com>
529
530         Reviewed by Sam Weinig.
531
532         <rdar://problem/7766413>
533         
534         Fixed a crash seen when using the JavaScriptCore API with WebKit.
535         
536         No layout test because DumpRenderTree doesn't use the JavaScriptCore API
537         in this way.
538
539         * interpreter/RegisterFile.cpp:
540         (JSC::RegisterFile::setGlobalObject):
541         (JSC::RegisterFile::clearGlobalObject):
542         (JSC::RegisterFile::globalObject):
543         * interpreter/RegisterFile.h:
544         (JSC::RegisterFile::RegisterFile): Use WeakGCPtr for managing m_globalObject,
545         since it's a weak pointer. (We never noticed this error before because,
546         in WebKit, global objects always have a self-reference in a global variable,
547         so marking the register file's global variables would keep m_globalObject
548         alive. In the JavaScriptCore API, you can allocate a global object with
549         no self-reference.)
550
551         * runtime/JSActivation.h: Removed unneeded #include.
552
553         * runtime/JSGlobalObject.cpp:
554         (JSC::JSGlobalObject::~JSGlobalObject): Don't use ==, since a weak
555         pointer is 0 when the object it points to runs its destructor.
556
557         * runtime/WeakGCPtr.h:
558         (JSC::WeakGCPtr::clear): Changed to return a bool indicating whether the
559         clear actually happened.
560         (JSC::WeakGCPtr::assign): Changed to forbid assignment of 0 as a shorthand
561         for calling clear(). A client should never clear by assigning 0, since
562         clear() should be conditional on whether the object doing the clearing
563         is still pointed to by the weak pointer. (Otherwise, a zombie object might
564         clear a pointer to a new, valid object.)
565
566 2010-04-25  Sam Weinig  <sam@webkit.org>
567
568         Reviewed by Maciej Stachowiak.
569
570         Fix for https://bugs.webkit.org/show_bug.cgi?id=38097
571         Disentangle initializing the main thread from initializing threading
572
573         This is the first step in getting rid of the WEB_THREAD #define and
574         paving the way to allowing mac both WebKit and WebKit2 to use the same
575         WebCore.
576
577         * JavaScriptCore.exp: Export initializeMainThread and initializeMainThreadToProcessMainThread.
578         * JavaScriptCore.xcodeproj/project.pbxproj: Sort files.
579
580         * wtf/MainThread.cpp:
581         (WTF::mainThreadInitializationMutex):
582         (WTF::mainThreadFunctionQueueMutex):
583         (WTF::initializeMainThread):
584         (WTF::deprecatedInitializeMainThread):
585         * wtf/MainThread.h:
586         Added Mac only initializeMainThreadToProcessMainThread which sets up callOnMainThread
587         and isMainThead calls to assume that WebCore's main thread is also the
588         process's main thread. Since it is possible that both initializeMainThread
589         and initializeMainThreadToProcessMainThread could be called, the first one called
590         wins (either will work).
591
592         * wtf/Threading.h: Moved to top of file.
593
594         * wtf/ThreadingPthreads.cpp:
595         (WTF::initializeThreading): Remove call to initializeMainThread.
596         * wtf/ThreadingWin.cpp:
597         (WTF::initializeThreading): Ditto.
598         * wtf/gtk/ThreadingGtk.cpp:
599         (WTF::initializeThreading): Ditto.
600
601         * wtf/mac/MainThreadMac.mm:
602         (WTF::initializeMainThreadPlatform):
603         (WTF::initializeMainThreadToProcessMainThread):
604         (WTF::scheduleDispatchFunctionsOnMainThread):
605         (WTF::isMainThread):
606         Add runtime switch between the old behavior of using the system's main
607         thread and a stored pointer to the main thread. Tiger always uses the
608         system's main thread.
609
610         * wtf/qt/ThreadingQt.cpp:
611         (WTF::initializeThreading): Remove call to initializeMainThread.
612         * wtf/win/MainThreadWin.cpp:
613         (WTF::initializeMainThreadPlatform): Add call to initializeCurrentThreadInternal
614         removed from initializeThreading.
615
616 2010-04-26  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
617
618         Reviewed by Kenneth Rohde Christiansen.
619
620         Fix a memory leak in the QScriptString.
621
622         QScriptStringPrivate's constructor shouldn't call JSStringRetain as
623         QScriptConverter implicitly pass a JSStringRef ownership.
624
625         [Qt] QScriptStringPrivate c'tor problem
626         https://bugs.webkit.org/show_bug.cgi?id=38110
627
628         * qt/api/qscriptstring_p.h:
629         (QScriptStringPrivate::QScriptStringPrivate):
630
631 2010-04-24  Darin Adler  <darin@apple.com>
632
633         Reviewed by Dan Bernstein.
634
635         REGRESSION (r56560): Crash in parseFloat if passed invalid UTF-16 data
636         https://bugs.webkit.org/show_bug.cgi?id=38083
637         rdar://problem/7901044
638
639         Tests: fast/js/ToNumber.html
640                fast/js/parseFloat.html
641
642         * runtime/JSGlobalObjectFunctions.cpp:
643         (JSC::parseInt): Added a FIXME comment about a problem I noticed.
644         (JSC::parseFloat): Added a FIXME comment about a problem I noticed;
645         covered by test cases in the test I added.
646         * runtime/UString.cpp:
647         (JSC::UString::toDouble): Added FIXME comments about two problems I
648         noticed; covered by test cases in the tests I added. Added a return
649         statement so we don't crash when illegal UTF-16 sequences are present.
650
651 2010-04-24  Anton Muhin  <antonm@chromium.org>
652
653         Reviewed by Darin Adler.
654
655         Allow to construct HashTraits<WebCore::QualifiedName>::constructDeletedValue
656
657         Former implementation attempted to use AtomicString(HashTableDeletedValue)
658         however those values cannot be used that way: one cannot construct
659         QualifiedNameImpl out of such AtomicString as we'll try to lookup this string
660         in the table, for example.
661         https://bugs.webkit.org/show_bug.cgi?id=37722
662
663         * wtf/RefPtr.h: expose hash table deleted value
664
665 2010-04-23  Sam Weinig  <sam@webkit.org>
666
667         Reviewed by David Levin.
668
669         Fix for https://bugs.webkit.org/show_bug.cgi?id=38060
670         Split up Threading.h
671
672         Move bits for of Threading.h into 3 new files.
673         - Atomics.h for atomic operations.
674         - ThreadSafeShared.h for the ThreadSafeShared class.
675         - ThreadingPrimitives.h for the primitives and platform types.
676
677         Basic threading operations (creation, etc.) remain in Threading.h.
678
679         * GNUmakefile.am:
680         * JavaScriptCore.gypi:
681         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
682         * JavaScriptCore.xcodeproj/project.pbxproj:
683         * wtf/Atomics.h: Copied from wtf/Threading.h.
684         * wtf/ThreadSafeShared.h: Copied from wtf/Threading.h.
685         * wtf/Threading.h:
686         * wtf/ThreadingPrimitives.h: Copied from wtf/Threading.h.
687
688 2010-04-23  Sam Weinig  <sam@webkit.org>
689
690         Fix Qt build.
691
692         * wtf/qt/MainThreadQt.cpp: #include <QThread>
693
694 2010-04-22  Sam Weinig  <sam@webkit.org>
695
696         Reviewed by Anders Carlsson.
697
698         Fix for https://bugs.webkit.org/show_bug.cgi?id=38022
699         Move isMainThread predicate function to MainThread.h
700
701         * wtf/MainThread.cpp:
702         (WTF::initializeMainThread):
703         (WTF::isMainThread):
704         * wtf/MainThread.h:
705         * wtf/Threading.h:
706         * wtf/ThreadingPthreads.cpp:
707         (WTF::initializeThreading):
708         * wtf/ThreadingWin.cpp:
709         (WTF::initializeThreading):
710         * wtf/gtk/ThreadingGtk.cpp:
711         (WTF::initializeThreading):
712         * wtf/mac/MainThreadMac.mm:
713         (WTF::initializeMainThreadPlatform):
714         (WTF::isMainThread):
715         * wtf/qt/MainThreadQt.cpp:
716         (WTF::isMainThread):
717         * wtf/qt/ThreadingQt.cpp:
718         (WTF::initializeThreading):
719         * wtf/text/AtomicString.cpp:
720
721 2010-04-23  Gabor Rapcsanyi  <rgabor@inf.u-szeged.hu>
722
723         Reviewed by Laszlo Gombos.
724
725         Add RVCT support for Linux
726
727         Developed in cooperation with Gabor Loki.
728
729         * API/JSStringRef.h:
730         * jit/ExecutableAllocator.h:
731         * jit/ExecutableAllocatorPosix.cpp:
732         (JSC::ExecutableAllocator::cacheFlush):
733         * jit/JITStubs.cpp:
734         * wtf/MathExtras.h:
735         * wtf/unicode/qt4/UnicodeQt4.h:
736
737 2010-04-23  Patrick Gansterer  <paroga@paroga.com>
738
739         Reviewed by Laszlo Gombos.
740
741         [WIN] Move OwnPtrWin.cpp into platform specific folder.
742         https://bugs.webkit.org/show_bug.cgi?id=38042
743
744         * JavaScriptCore.gypi:
745         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
746         * wtf/OwnPtrWin.cpp: Removed.
747         * wtf/win/OwnPtrWin.cpp: Copied from JavaScriptCore/wtf/OwnPtrWin.cpp.
748
749 2010-04-23  Patrick Gansterer  <paroga@paroga.com>
750
751         Reviewed by Laszlo Gombos.
752
753         [BREWMP] Move OwnPtrBrew.cpp into platform specific folder.
754         https://bugs.webkit.org/show_bug.cgi?id=38042
755
756         * wtf/OwnPtrBrew.cpp: Removed.
757         * wtf/brew/OwnPtrBrew.cpp: Copied from JavaScriptCore/wtf/OwnPtrBrew.cpp.
758
759 2010-04-22  Steve Block  <steveblock@google.com>
760
761         Reviewed by Adam Barth.
762
763         Update Android to use isfinite, isinf, isnan and signbit from namespace std.
764         https://bugs.webkit.org/show_bug.cgi?id=37948
765
766         * wtf/MathExtras.h:
767
768 2010-04-22  Fumitoshi Ukai  <ukai@chromium.org>
769
770         Unreviewed build fix.
771
772         * wtf/MD5.cpp: fix include path of CString.h
773
774 2010-04-22  Fumitoshi Ukai  <ukai@chromium.org>
775
776         Reviewed by Adam Barth.
777
778         MD5 is required for WebSocket new protocol implementation
779         https://bugs.webkit.org/show_bug.cgi?id=37913
780
781         * GNUmakefile.am:
782         * JavaScriptCore.exp:
783         * JavaScriptCore.gypi:
784         * JavaScriptCore.pro:
785         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
786         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
787         * JavaScriptCore.xcodeproj/project.pbxproj:
788         * wtf/MD5.cpp: Added.
789         * wtf/MD5.h: Added.
790
791 2010-04-22  Gavin Barraclough  <barraclough@apple.com>
792
793         Reviewed by NOBODY (build fix).
794         Errk, accidentally committed commenting out two ASSERTs! reverting.
795
796         * runtime/Collector.cpp:
797         (JSC::Heap::protect):
798         (JSC::Heap::unprotect):
799
800 2010-04-22  Gavin Barraclough  <barraclough@apple.com>
801
802         Reviewed by Geoff Garen.
803
804         https://bugs.webkit.org/show_bug.cgi?id=38006
805         Change lifetime of JSC::IdentifierTables used by WebCores to match AtomicStringTable
806
807         Presently JSC's IdentifierTables are owned by the JSGlobalData.  For
808         JSGlobalData objects created via the API this should continue to be the case,
809         but for the JSGlobalData objects used by WebCore (the main thread's common
810         global data, and those for workers) use a IdentifierTable provided (and owned)
811         by wtfThreadData.  This allow the lifetime of these IdentifierTable to match
812         those of the corresponding AtomicStringTables.
813
814         * API/APIShims.h:
815         (JSC::APIEntryShim::APIEntryShim):
816         * API/JSContextRef.cpp:
817         (JSContextGroupCreate):
818         * runtime/Collector.cpp:
819         (JSC::Heap::protect):
820         (JSC::Heap::unprotect):
821         (JSC::Heap::markRoots):
822         * runtime/JSGlobalData.cpp:
823         (JSC::JSGlobalData::JSGlobalData):
824         (JSC::JSGlobalData::~JSGlobalData):
825         (JSC::JSGlobalData::createContextGroup):
826         (JSC::JSGlobalData::create):
827         (JSC::JSGlobalData::sharedInstance):
828         * runtime/JSGlobalData.h:
829         (JSC::JSGlobalData::):
830         (JSC::JSGlobalData::isSharedInstance):
831         * runtime/JSLock.cpp:
832         (JSC::JSLock::JSLock):
833         (JSC::JSLock::lock):
834         (JSC::JSLock::unlock):
835         (JSC::JSLock::DropAllLocks::DropAllLocks):
836         * wtf/WTFThreadData.cpp:
837         (WTF::WTFThreadData::WTFThreadData):
838         (WTF::WTFThreadData::~WTFThreadData):
839
840 2010-04-22  Sheriff Bot  <webkit.review.bot@gmail.com>
841
842         Unreviewed, rolling out r58110.
843         http://trac.webkit.org/changeset/58110
844         https://bugs.webkit.org/show_bug.cgi?id=38007
845
846         Caused an internal compiler error on Qt (Requested by abarth
847         on #webkit).
848
849         * wtf/MathExtras.h:
850
851 2010-04-22  Gavin Barraclough  <barraclough@apple.com>
852
853         Reviewed by NOBODY (windows build fix).
854
855         * API/JSWeakObjectMapRefPrivate.cpp:
856
857 2010-04-22  Gavin Barraclough  <barraclough@apple.com>
858
859         Reviewed by NOBODY (windows build fix).
860
861         * API/JSBase.cpp:
862         * API/JSCallbackObject.cpp:
863
864 2010-04-22  Gavin Barraclough  <barraclough@apple.com>
865
866         Reviewed by Geoff Garen.
867
868         https://bugs.webkit.org/show_bug.cgi?id=37978
869         Unify JSC::IdentifierTable and WebCore::AtomicStringTable implementations.
870
871         These two classes both implement a HashSet of uniqued StringImpls, with
872         translator classes to avoid unnecessary object creation. The only difference
873         between the classes is which flag (isIdentifier or inTable) is set.
874         Combine the two classes using a template predicated on which flag to use.
875
876         New class AtomicStringTable created, containing all the goodness from
877         IdentifierTable & AtomicStringTable, expect for Identifier's literalTable,
878         which has been moved onto JSGlobalData. Removed duplicate string translator
879         classes. Renamed StringImpl's inTable flag to more explicit 'isAtomic',
880         and set this on the empty string (which matches Identifier behaviour, and
881         removes a redundant check for zero-length).
882
883         * GNUmakefile.am:
884         * JavaScriptCore.gypi:
885         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
886         * JavaScriptCore.xcodeproj/project.pbxproj:
887         * runtime/Identifier.cpp:
888         (JSC::createLiteralTable):
889         (JSC::deleteLiteralTable):
890         (JSC::Identifier::add):
891         (JSC::Identifier::addSlowCase):
892         * runtime/Identifier.h:
893         * runtime/JSGlobalData.cpp:
894         (JSC::JSGlobalData::JSGlobalData):
895         (JSC::JSGlobalData::~JSGlobalData):
896         * runtime/JSGlobalData.h:
897         * wtf/WTFThreadData.cpp:
898         (WTF::WTFThreadData::WTFThreadData):
899         (WTF::WTFThreadData::~WTFThreadData):
900         * wtf/WTFThreadData.h:
901         (WTF::WTFThreadData::atomicStringTable):
902         * wtf/text/AtomicString.cpp:
903         (WebCore::table):
904         (WebCore::operator==):
905         (WebCore::AtomicString::add):
906         (WebCore::AtomicString::find):
907         (WebCore::AtomicString::remove):
908         * wtf/text/AtomicStringTable.h: Added.
909         (WTF::CStringTranslator::hash):
910         (WTF::CStringTranslator::equal):
911         (WTF::CStringTranslator::translate):
912         (WTF::UCharBufferTranslator::hash):
913         (WTF::UCharBufferTranslator::equal):
914         (WTF::UCharBufferTranslator::translate):
915         (WTF::HashAndCharactersTranslator::hash):
916         (WTF::HashAndCharactersTranslator::equal):
917         (WTF::HashAndCharactersTranslator::translate):
918         (WTF::IdentifierOrAtomicStringTable::remove):
919         (WTF::::~IdentifierOrAtomicStringTable):
920         (WTF::::add):
921         (WTF::::find):
922         * wtf/text/StringImpl.cpp:
923         (WebCore::StringImpl::~StringImpl):
924         * wtf/text/StringImpl.h:
925         (WebCore::StringImpl::isAtomic):
926         (WebCore::StringImpl::setIsAtomic):
927         (WebCore::equal):
928         * wtf/text/StringImplBase.h:
929         (WTF::StringImplBase::StringImplBase):
930
931 2010-04-22  Steve Block  <steveblock@google.com>
932
933         Reviewed by Adam Barth.
934
935         Update Android to use isfinite, isinf, isnan and signbit from namespace std.
936         https://bugs.webkit.org/show_bug.cgi?id=37948
937
938         * wtf/MathExtras.h:
939
940 2010-04-22  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
941
942         Reviewed by Kenneth Rohde Christiansen.
943
944         [Qt] Remove dependency of JSC to QtGui
945         https://bugs.webkit.org/show_bug.cgi?id=37867
946
947         The patch also make sure that hal.h is in the include path on Symbian.
948         The dependency to QtGui took care of that before.
949
950         Patch by Thiago Macieira <thiago.macieira@nokia.com>
951              and Rohan McGovern <rohan.mcgovern@nokia.com>
952
953         * JavaScriptCore.pri:
954         * JavaScriptCore.pro:
955
956 2010-04-22  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
957
958         Reviewed by Tor Arne Vestbø.
959
960         [Qt] Corrects symbols visibility for JavaScriptCore.
961
962         https://bugs.webkit.org/show_bug.cgi?id=37867
963
964         * JavaScriptCore.pro:
965
966 2010-04-22  Gabor Loki  <loki@webkit.org>
967
968         Reviewed by Gavin Barraclough.
969
970         Use BLX and BX to keep happy the return stack predictor above ARMv4
971         https://bugs.webkit.org/show_bug.cgi?id=37862
972
973         Inspired by Jacob Bramley's patch from JaegerMonkey
974
975         * assembler/ARMAssembler.cpp:
976         (JSC::ARMAssembler::executableCopy):
977         * assembler/ARMAssembler.h:
978         (JSC::ARMAssembler::):
979         (JSC::ARMAssembler::bx):
980         (JSC::ARMAssembler::blx):
981         (JSC::ARMAssembler::loadBranchTarget):
982         (JSC::ARMAssembler::jmp):
983         (JSC::ARMAssembler::getLdrImmAddress):
984         * assembler/MacroAssemblerARM.h:
985         (JSC::MacroAssemblerARM::jump):
986         (JSC::MacroAssemblerARM::nearCall):
987         (JSC::MacroAssemblerARM::call):
988         (JSC::MacroAssemblerARM::ret):
989         (JSC::MacroAssemblerARM::prepareCall):
990         (JSC::MacroAssemblerARM::call32):
991
992 2010-04-21  Andy Estes  <aestes@apple.com>
993
994         Rubber stamped by Mark Rowe.
995
996         Export WTF::deleteOwnedPtr(HFONT).
997
998         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
999
1000 2010-04-21  Gavin Barraclough  <barraclough@apple.com>
1001
1002         Rubber Stamped by Oliver Hunt.
1003
1004         Make SmallStrings store an array of RefPtr<StringImpl>,
1005         instead of a direct array of StringImpls.  This allows
1006         us to remove a friend (and a layering violation) from
1007         WTF::StringImpl, and makes it so that all StringImpls
1008         are individually heap allocated.
1009
1010         * runtime/SmallStrings.cpp:
1011         (JSC::SmallStringsStorage::rep):
1012         (JSC::SmallStringsStorage::SmallStringsStorage):
1013         * wtf/text/StringImpl.h:
1014
1015 2010-04-21  Sam Weinig  <sam@webkit.org>
1016
1017         Reviewed by Geoffrey Garen.
1018
1019         Fix for https://bugs.webkit.org/show_bug.cgi?id=37937
1020         Wean JavaScriptCore off calls to isMainThread()
1021
1022         - Replace use of isMainThread() for interpreter reentry checks
1023           with a stored value on the JSGlobalData.
1024         - Replace use of isMainThread() for useMainThread only check in the
1025           collector with a stored exclusive thread.
1026
1027         * API/JSContextRef.cpp:
1028         (JSContextGroupCreate):
1029         Always default to a small stack type for uses of the JSC API. It is
1030         unlikely that the interpreter reentry required on the web will be as
1031         important for other uses of JavaScriptCore. 
1032
1033         * JavaScriptCore.exp: 
1034         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1035         Update exports.
1036
1037         * interpreter/Interpreter.cpp:
1038         (JSC::Interpreter::execute):
1039         (JSC::Interpreter::prepareForRepeatCall):
1040         Use new stored JSGlobalData::maxReentryDepth instead of isMainThread().
1041
1042         * interpreter/Interpreter.h:
1043         Rename MaxMainThreadReentryDepth to MaxLargeThreadReentryDepth and 
1044         MaxSecondaryThreadReentryDepth to MaxSmallThreadReentryDepth.
1045
1046         * jsc.cpp:
1047         (main): Use the a large stack for jsc since it is always using the
1048         main thread.
1049         
1050         * runtime/ArrayPrototype.cpp:
1051         (JSC::arrayProtoFuncToString):
1052         (JSC::arrayProtoFuncToLocaleString):
1053         (JSC::arrayProtoFuncJoin):
1054         Use new stored JSGlobalData::maxReentryDepth instead of isMainThread().
1055
1056         * runtime/Collector.cpp:
1057         (JSC::Heap::registerThread):
1058         Use the concept of making JSC run on an exclusiveThread instead of
1059         forcing a mainThreadOnly assertion.
1060         
1061         * runtime/JSGlobalData.cpp:
1062         (JSC::JSGlobalData::JSGlobalData):
1063         (JSC::JSGlobalData::createNonDefault):
1064         (JSC::JSGlobalData::create):
1065         (JSC::JSGlobalData::createLeaked):
1066         (JSC::JSGlobalData::sharedInstance):
1067         * runtime/JSGlobalData.h:
1068         Add ThreadStackType argument to JSGlobalData constructors and set
1069         maxReentryDepth based on it.
1070
1071 2010-04-21  Gavin Barraclough  <barraclough@apple.com>
1072
1073         Reviewed by NOBODY (windows build fix pt. 3).
1074
1075         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1076
1077 2010-04-21  Gavin Barraclough  <barraclough@apple.com>
1078
1079         Reviewed by NOBODY (windows build fix pt. 2).
1080
1081         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1082
1083 2010-04-21  Gavin Barraclough  <barraclough@apple.com>
1084
1085         Reviewed by NOBODY (Qt build fix).
1086
1087         * JavaScriptCore.gypi:
1088         * JavaScriptCore.pro:
1089         * wtf/qt/StringQt.cpp: Copied from WebCore/platform/text/qt/StringQt.cpp.
1090
1091 2010-04-21  Gavin Barraclough  <barraclough@apple.com>
1092
1093         Reviewed by NOBODY (windows build fix).
1094
1095         * API/JSValueRef.cpp:
1096         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
1097         * runtime/Identifier.cpp:
1098         (JSC::IdentifierTable::~IdentifierTable):
1099         (JSC::IdentifierTable::add):
1100         * runtime/Identifier.h:
1101         * wtf/WTFThreadData.h:
1102         (JSC::IdentifierTable::remove):
1103         (JSC::IdentifierTable::literalTable):
1104         * wtf/text/StringImpl.cpp:
1105         (WebCore::StringImpl::~StringImpl):
1106
1107 2010-04-20  Gavin Barraclough  <barraclough@apple.com>
1108
1109         Reviewed by Oliver Hunt, Darin Adler.
1110
1111         Bug 37906 - Remove JSC::UStringImpl; unify with StringImpl.
1112
1113         JSC::UStringImpl and WebCore::StringImpl (soon to be renamed to
1114         WTF::StringImpl) are almost identical.  Remove duplication of code by unifying
1115         the two, move missing features from UStringImpl into StringImpl & delete the
1116         class UStringImpl.
1117
1118         * API/JSClassRef.cpp:
1119         * API/JSContextRef.cpp:
1120         * GNUmakefile.am:
1121         * JavaScriptCore.exp:
1122         * JavaScriptCore.pro:
1123         * JavaScriptCore.xcodeproj/project.pbxproj:
1124         * bytecode/EvalCodeCache.h:
1125         * bytecode/JumpTable.cpp:
1126         * profiler/ProfileNode.cpp:
1127         * runtime/Identifier.cpp:
1128         (JSC::Identifier::add):
1129         * runtime/Identifier.h:
1130         (JSC::Identifier::equal):
1131         * runtime/UString.cpp:
1132         * runtime/UString.h:
1133         (WTF::):
1134         * runtime/UStringImpl.cpp: Removed.
1135         * runtime/UStringImpl.h:
1136         * wtf/text/StringHash.h:
1137         (WebCore::StringHash::equal):
1138         (WebCore::CaseFoldingHash::equal):
1139         * wtf/text/StringImpl.cpp:
1140         (WebCore::StringImpl::~StringImpl):
1141         (WebCore::StringImpl::empty):
1142         (WebCore::StringImpl::sharedBuffer):
1143         (WebCore::equal):
1144         * wtf/text/StringImpl.h:
1145         (WebCore::StringImpl::StringImpl):
1146         (WebCore::StringImpl::create):
1147         (WebCore::StringImpl::tryCreateUninitialized):
1148         (WebCore::StringImpl::cost):
1149         (WebCore::StringImpl::isIdentifier):
1150         (WebCore::StringImpl::setIsIdentifier):
1151         (WebCore::StringImpl::computeHash):
1152         (WebCore::StringImpl::copyChars):
1153         (WebCore::StringImpl::):
1154
1155 2010-04-21  Patrick Gansterer  <paroga@paroga.com>
1156
1157         Reviewed by Darin Adler.
1158
1159         Added missing #include "Lookup.h" in LUT source files.
1160         https://bugs.webkit.org/show_bug.cgi?id=37903
1161
1162         * runtime/ArrayPrototype.cpp:
1163         * runtime/DatePrototype.cpp:
1164         * runtime/JSONObject.cpp:
1165         * runtime/MathObject.cpp:
1166         * runtime/NumberConstructor.cpp:
1167         * runtime/RegExpConstructor.cpp:
1168         * runtime/RegExpObject.cpp:
1169         * runtime/StringPrototype.cpp:
1170
1171 2010-04-21  Gustavo Sverzut Barbieri  <barbieri@profusion.mobi>
1172
1173         Reviewed by Nikolas Zimmermann.
1174
1175         Add missing EFL JavaScriptCore file.
1176         http://webkit.org/b/37854
1177
1178         * wtf/efl: Added.
1179         * wtf/efl/MainThreadEfl.cpp: Added.
1180         (WTF::initializeMainThreadPlatform):
1181         (WTF::timeoutFired):
1182         (WTF::scheduleDispatchFunctionsOnMainThread):
1183
1184 2010-04-20  Xan Lopez  <xlopez@igalia.com>
1185
1186         Another attempt to fix the build.
1187
1188         * GNUmakefile.am:
1189
1190 2010-04-20  Oliver Hunt  <oliver@apple.com>
1191
1192         Reviewed by Maciej Stachowiak.
1193
1194         [ES5] RegExp literals are constants that should be persistent across multiple function calls.
1195         https://bugs.webkit.org/show_bug.cgi?id=37908
1196
1197         Dump the separate RegExp constant pool, and just use the standard JS constant pool
1198         in codeblock.  This allows us to drop op_new_regexp and all associated code as well.
1199
1200         * bytecode/CodeBlock.cpp:
1201         (JSC::CodeBlock::dump):
1202         (JSC::CodeBlock::shrinkToFit):
1203         * bytecode/CodeBlock.h:
1204         * bytecode/Opcode.h:
1205         * bytecompiler/BytecodeGenerator.cpp:
1206         (JSC::BytecodeGenerator::emitLoad):
1207         * bytecompiler/BytecodeGenerator.h:
1208         * bytecompiler/NodesCodegen.cpp:
1209         (JSC::RegExpNode::emitBytecode):
1210         * interpreter/Interpreter.cpp:
1211         (JSC::Interpreter::privateExecute):
1212         * jit/JIT.cpp:
1213         (JSC::JIT::privateCompileMainPass):
1214         * jit/JIT.h:
1215         * jit/JITOpcodes.cpp:
1216         * jit/JITStubs.cpp:
1217         * jit/JITStubs.h:
1218         (JSC::):
1219
1220 2010-04-20  Oliver Hunt  <oliver@apple.com>
1221
1222         Fix license on create_regex_tables
1223
1224         * create_regex_tables:
1225
1226 2010-04-20  Oliver Hunt  <oliver@apple.com>
1227
1228         Reviewed by NOBODY (Build fix).
1229
1230         Fix gtk
1231
1232         * GNUmakefile.am:
1233         * make-generated-sources.sh:
1234
1235 2010-04-20  Gavin Barraclough  <barraclough@apple.com>
1236
1237         Reviewed by Oliver Hunt.
1238
1239         Bug 37895 - Share common code from UStringImplBase with StringImpl
1240
1241         The implementation of StringImpl & UStringImpl is very similar.  Restructure
1242         StringImpl to match UStringImpl, moving the flags and length into a base class,
1243         so that this can be shared between both string types to increase code reuse.
1244
1245         * JavaScriptCore.xcodeproj/project.pbxproj:
1246         * runtime/RopeImpl.h:
1247         (JSC::RopeImpl::RopeImpl):
1248         * runtime/UStringImpl.h:
1249         (JSC::UStringImpl::UStringImpl):
1250         * wtf/text/StringImpl.h:
1251         (WebCore::StringImpl::StringImpl):
1252         (WebCore::StringImpl::characters):
1253         * wtf/text/StringImplBase.h: Copied from JavaScriptCore/runtime/UStringImpl.h.
1254         (WTF::StringImplBase::length):
1255         (WTF::StringImplBase::operator new):
1256         (WTF::StringImplBase::StringImplBase):
1257
1258 2010-04-20  Oliver Hunt  <oliver@apple.com>
1259
1260         Reviewed by Gavin Barraclough.
1261
1262         Autogenerate yarr character tables
1263         https://bugs.webkit.org/show_bug.cgi?id=37877
1264
1265         Use a python script to automatically generate character tables
1266         for the builtin YARR character classes.  This allows us to generate
1267         actual tables as well, by using these tables we can both increase
1268         performance of the check (for complex builtins) and reduce the actual
1269         code size.
1270
1271         4-8% win on string-unpack-code, but lots of noise on other tests so
1272         i'm only confident saying its a 1% win overall.
1273
1274         * DerivedSources.make:
1275         * JavaScriptCore.xcodeproj/project.pbxproj:
1276         * assembler/AbstractMacroAssembler.h:
1277         (JSC::AbstractMacroAssembler::ExtendedAddress::ExtendedAddress):
1278         * assembler/MacroAssembler.h:
1279         (JSC::MacroAssembler::branchTest8):
1280         * assembler/MacroAssemblerX86Common.h:
1281         (JSC::MacroAssemblerX86Common::branchTest8):
1282         * assembler/MacroAssemblerX86_64.h:
1283         (JSC::MacroAssemblerX86_64::branchTest8):
1284         * assembler/X86Assembler.h:
1285         (JSC::X86Assembler::cmpb_im):
1286         (JSC::X86Assembler::testb_im):
1287         * bytecode/SamplingTool.cpp:
1288         (JSC::SamplingTool::dump):
1289         * create_regex_tables: Added.
1290         * yarr/RegexCompiler.cpp:
1291         (JSC::Yarr::CharacterClassConstructor::charClass):
1292         * yarr/RegexJIT.cpp:
1293         (JSC::Yarr::RegexGenerator::matchCharacterClass):
1294         (JSC::Yarr::RegexGenerator::generatePatternCharacterGreedy):
1295         (JSC::Yarr::RegexGenerator::generatePatternCharacterNonGreedy):
1296         (JSC::Yarr::RegexGenerator::generateCharacterClassGreedy):
1297         * yarr/RegexPattern.h:
1298         (JSC::Yarr::CharacterClassTable::create):
1299         (JSC::Yarr::CharacterClassTable::CharacterClassTable):
1300         (JSC::Yarr::CharacterClass::CharacterClass):
1301
1302 2010-04-20  Gavin Barraclough  <barraclough@apple.com>
1303
1304         Reviewed by NOBODY (speculative windows fix - missed a bit!).
1305
1306         * wtf/text/AtomicString.h:
1307
1308 2010-04-20  Gavin Barraclough  <barraclough@apple.com>
1309
1310         Reviewed by NOBODY (speculative windows fix).
1311
1312         * wtf/text/AtomicString.h:
1313
1314 2010-04-20  Gavin Barraclough  <barraclough@apple.com>
1315
1316         Reviewed by NOBODY (windows build fix).
1317
1318         Add missing .def file entries.
1319
1320         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1321
1322 2010-04-20  Gavin Barraclough  <barraclough@apple.com>
1323
1324         Reviewed by Geoff Garen.
1325
1326         Bug 37869 - Move URopeImpl to its own .h/.cpp
1327         
1328         Currently Ropes are implemented by the class URopeImpl, which is defined in
1329         UStringImpl.h, and then typedefed to the name JSString::Rope. Remove the
1330         typedef, and rename all uses of URopeImpl and JSString::Rope to just RopeImpl.
1331
1332         Move RopeImpl to its own header, and remove all remaining references to ropes
1333         from UStringImpl (rename UStringOrRopeImpl to UStringImplBase, rename or move
1334         the isRope & deref methods from UStringOrRopeImpl).
1335
1336         * JavaScriptCore.xcodeproj/project.pbxproj:
1337         * runtime/JSString.cpp:
1338         (JSC::JSString::resolveRope):
1339         * runtime/JSString.h:
1340         (JSC::):
1341         (JSC::RopeBuilder::JSString):
1342         (JSC::RopeBuilder::~JSString):
1343         (JSC::RopeBuilder::appendStringInConstruct):
1344         (JSC::RopeBuilder::JSStringFinalizerStruct::):
1345         * runtime/RopeImpl.cpp: Copied from JavaScriptCore/runtime/UStringImpl.cpp.
1346         (JSC::RopeImpl::derefFibersNonRecursive):
1347         (JSC::RopeImpl::destructNonRecursive):
1348         * runtime/RopeImpl.h: Copied from JavaScriptCore/runtime/UStringImpl.h.
1349         (JSC::RopeImpl::tryCreateUninitialized):
1350         (JSC::RopeImpl::isRope):
1351         (JSC::RopeImpl::deref):
1352         (JSC::RopeImpl::RopeImpl):
1353         * runtime/UStringImpl.cpp:
1354         * runtime/UStringImpl.h:
1355         (JSC::UStringImplBase::isInvalid):
1356         (JSC::UStringImplBase::ref):
1357         (JSC::UStringImplBase::UStringImplBase):
1358         (JSC::UStringImplBase::):
1359         (JSC::UStringImpl::UStringImpl):
1360
1361 2010-04-20  Gavin Barraclough  <barraclough@apple.com>
1362
1363         Reviewed by Geoff Garen.
1364
1365         Bug 37828 - Move WebCore's String classes to WTF
1366
1367         Move these classes up to WTF so they are available to all clients of WTF (in
1368         particular JSC).
1369
1370         As a first patch, making the most minimal change possible, since this patch
1371         could easily grow rather large since we'll have to change every class forward
1372         declaration ( e.g. every "namespace WebCore { class String; }" much change to
1373         "namespace WTF { class String; }").
1374
1375         Moving the files, but leaving the classes logically in the WebCore namespace -
1376         which is technically a layering violation - I'll come back and fix this up in a
1377         subsequent patch.
1378
1379         * Android.mk:
1380         * Android.v8.wtf.mk:
1381         * GNUmakefile.am:
1382         * JavaScriptCore.exp:
1383         * JavaScriptCore.gypi:
1384         * JavaScriptCore.pro:
1385         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
1386         * JavaScriptCore.xcodeproj/project.pbxproj:
1387         * config.h:
1388         * wtf/StaticConstructors.h: Copied from WebCore/platform/StaticConstructors.h.
1389         * wtf/text/AtomicString.cpp: Copied from WebCore/platform/text/AtomicString.cpp.
1390         * wtf/text/AtomicString.h: Copied from WebCore/platform/text/AtomicString.h.
1391         * wtf/text/AtomicStringImpl.h: Copied from WebCore/platform/text/AtomicStringImpl.h.
1392         * wtf/text/StringBuffer.h: Copied from WebCore/platform/text/StringBuffer.h.
1393         * wtf/text/StringHash.h: Copied from WebCore/platform/text/StringHash.h.
1394         * wtf/text/StringImpl.cpp: Copied from WebCore/platform/text/StringImpl.cpp.
1395         * wtf/text/StringImpl.h: Copied from WebCore/platform/text/StringImpl.h.
1396         * wtf/text/WTFString.cpp: Copied from WebCore/platform/text/String.cpp.
1397         (WebCore::charactersToFloat):
1398         * wtf/text/WTFString.h: Copied from WebCore/platform/text/PlatformString.h.
1399
1400 2010-04-20  Csaba Osztrogonác  <ossy@webkit.org>
1401
1402         [Qt] Unreviewed speculative buildfix for WinCE after r57882
1403         https://bugs.webkit.org/show_bug.cgi?id=37701
1404
1405         * JavaScriptCore.pri: missing wince* case added.
1406
1407 2010-04-20  Gavin Barraclough  <barraclough@apple.com>
1408
1409         Reviewed by NOBODY (build fix).
1410         Speculative Chromium/Win build fix, attempt #2.
1411
1412         * config.h:
1413
1414 2010-04-20  Gavin Barraclough  <barraclough@apple.com>
1415
1416         Reviewed by NOBODY (build fix).
1417         Speculative Chromium/Win build fix.
1418
1419         * config.h: JS_EXPORTDATA should do nothing on !JSC builds.
1420
1421 2010-04-20  Csaba Osztrogonác  <ossy@webkit.org>
1422
1423         Reviewed by Simon Hausmann.
1424
1425         [Qt] Target(WebCore,jsc,...) must depends on static library of JavaScriptCore
1426         https://bugs.webkit.org/show_bug.cgi?id=37701
1427
1428         * JavaScriptCore.pri: dependency added.
1429
1430 2010-04-20  Gavin Barraclough  <barraclough@apple.com>
1431
1432         Rubber stamped by Maciej Stachowiak (relanding r57829).
1433         Added missing JS_EXPORTDATA
1434
1435         * API/APIShims.h:
1436         (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock):
1437         (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock):
1438         (JSC::APICallbackShim::APICallbackShim):
1439         (JSC::APICallbackShim::~APICallbackShim):
1440         * API/JSContextRef.cpp:
1441         * Android.mk:
1442         * Android.v8.wtf.mk:
1443         * GNUmakefile.am:
1444         * JavaScriptCore.exp:
1445         * JavaScriptCore.gypi:
1446         * JavaScriptCore.pro:
1447         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1448         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
1449         * JavaScriptCore.xcodeproj/project.pbxproj:
1450         * runtime/Completion.cpp:
1451         (JSC::checkSyntax):
1452         (JSC::evaluate):
1453         * runtime/Identifier.cpp:
1454         (JSC::Identifier::remove):
1455         (JSC::Identifier::checkCurrentIdentifierTable):
1456         * runtime/Identifier.h:
1457         * runtime/InitializeThreading.cpp:
1458         (JSC::initializeThreadingOnce):
1459         * runtime/JSGlobalData.cpp:
1460         (JSC::JSGlobalData::create):
1461         * wtf/WTFThreadData.cpp: Copied from JavaScriptCore/wtf/WTFThreadData.cpp.
1462         * wtf/WTFThreadData.h: Copied from JavaScriptCore/wtf/WTFThreadData.h.
1463
1464 2010-04-19  Gavin Barraclough  <barraclough@apple.com>
1465
1466         Reviewed by NOBODY (rolling out r57829).
1467         This broke windows.
1468
1469         * API/APIShims.h:
1470         (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock):
1471         (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock):
1472         (JSC::APICallbackShim::APICallbackShim):
1473         (JSC::APICallbackShim::~APICallbackShim):
1474         * API/JSContextRef.cpp:
1475         * Android.mk:
1476         * Android.v8.wtf.mk:
1477         * GNUmakefile.am:
1478         * JavaScriptCore.exp:
1479         * JavaScriptCore.gypi:
1480         * JavaScriptCore.pro:
1481         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1482         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
1483         * JavaScriptCore.xcodeproj/project.pbxproj:
1484         * runtime/Completion.cpp:
1485         (JSC::checkSyntax):
1486         (JSC::evaluate):
1487         * runtime/Identifier.cpp:
1488         (JSC::Identifier::remove):
1489         (JSC::Identifier::checkCurrentIdentifierTable):
1490         (JSC::createIdentifierTableSpecificCallback):
1491         (JSC::createIdentifierTableSpecific):
1492         * runtime/Identifier.h:
1493         (JSC::ThreadIdentifierTableData::ThreadIdentifierTableData):
1494         (JSC::defaultIdentifierTable):
1495         (JSC::setDefaultIdentifierTable):
1496         (JSC::currentIdentifierTable):
1497         (JSC::setCurrentIdentifierTable):
1498         (JSC::resetCurrentIdentifierTable):
1499         * runtime/InitializeThreading.cpp:
1500         (JSC::initializeThreadingOnce):
1501         * runtime/JSGlobalData.cpp:
1502         (JSC::JSGlobalData::create):
1503         * wtf/WTFThreadData.cpp: Removed.
1504         * wtf/WTFThreadData.h: Removed.
1505
1506 2010-04-19  Douglas Gregor  <dgregor@apple.com>
1507
1508         Reviewed and landed by Anders Carlsson.
1509
1510         * runtime/UStringImpl.h:
1511         Fix class/struct declaration mismatches.
1512
1513 2010-04-19  Geoffrey Garen  <ggaren@apple.com>
1514
1515         Reviewed by Beth Dakin.
1516
1517         Checked in these tests I wrote becuase Balazs Kelemen wanted to use them.
1518
1519         * tests/perf: Added.
1520         * tests/perf/bench-allocate-nonretained.js: Added.
1521         * tests/perf/bench-allocate-retained.js: Added.
1522
1523 2010-04-19  Gavin Barraclough  <barraclough@apple.com>
1524
1525         Reviewed by NOBODY (windows build fix).
1526
1527         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1528
1529 2010-04-16  Gavin Barraclough  <barraclough@apple.com>
1530
1531         Reviewed by Sam Weinig.
1532
1533         https://bugs.webkit.org/show_bug.cgi?id=37745
1534         Move string uniquing tables to (new) WTFThreadData class.
1535
1536         Remove AtomicString's dependency on ThreadGlobalData so that we can move
1537         WebCore's string classes up to WTF.
1538
1539         WTFThreadData.cpp/.h are based on ThreadGlobalData from WebCore.
1540         Moved JSC & WebCore's string uniquing tables to this class.
1541
1542         This patch introduces a temporary layering violation in providing forward
1543         declarations of classes from JSC and WTF; this will be resolved as we move
1544         more string code up to WTF.
1545
1546         * API/APIShims.h:
1547         (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock):
1548         (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock):
1549         (JSC::APICallbackShim::APICallbackShim):
1550         (JSC::APICallbackShim::~APICallbackShim):
1551         * API/JSContextRef.cpp:
1552         * JavaScriptCore.exp:
1553         * JavaScriptCore.xcodeproj/project.pbxproj:
1554         * runtime/Completion.cpp:
1555         (JSC::checkSyntax):
1556         (JSC::evaluate):
1557         * runtime/Identifier.cpp:
1558         (JSC::Identifier::remove):
1559         (JSC::Identifier::checkCurrentIdentifierTable):
1560         * runtime/Identifier.h:
1561         * runtime/InitializeThreading.cpp:
1562         (JSC::initializeThreadingOnce):
1563         * runtime/JSGlobalData.cpp:
1564         (JSC::JSGlobalData::create):
1565         * wtf/WTFThreadData.cpp: Copied from WebCore/platform/ThreadGlobalData.cpp.
1566         (WTF::WTFThreadData::WTFThreadData):
1567         (WTF::WTFThreadData::~WTFThreadData):
1568         * wtf/WTFThreadData.h: Copied from WebCore/platform/ThreadGlobalData.h.
1569         (WTF::WTFThreadData::atomicStringTable):
1570         (WTF::WTFThreadData::initializeIdentifierTable):
1571         (WTF::WTFThreadData::currentIdentifierTable):
1572         (WTF::WTFThreadData::setCurrentIdentifierTable):
1573         (WTF::WTFThreadData::resetCurrentIdentifierTable):
1574         (WTF::wtfThreadData):
1575
1576 2010-04-19  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
1577
1578         Reviewed by Simon Hausmann.
1579
1580         [Qt] Build fix for WinCE.
1581
1582         Moved the include of the non-existing errno.h header file inside
1583         platform guard macros.
1584
1585         * jit/ExecutableAllocatorFixedVMPool.cpp:
1586
1587 2010-04-18  Kwang Yul Seo  <skyul@company100.net>
1588
1589         Reviewed by Laszlo Gombos.
1590
1591         [WINCE] Don't define WTF_CPU_MIDDLE_ENDIAN=1
1592         https://bugs.webkit.org/show_bug.cgi?id=37434
1593
1594         Windows CE supports little-endian format only, so don't define
1595         WTF_CPU_MIDDLE_ENDIAN=1.
1596
1597         * wtf/Platform.h:
1598
1599 2010-04-18  Simon Hausmann  <simon.hausmann@nokia.com>
1600
1601         Reviewed by Laszlo Gombos.
1602
1603         [Qt] Fix JavaScriptCore's include path for WinCE builds
1604
1605         https://bugs.webkit.org/show_bug.cgi?id=36751
1606
1607         * JavaScriptCore.pri:
1608
1609 2010-04-16  Gavin Barraclough  <barraclough@apple.com>
1610
1611         Reviewed by nobody, build fix.
1612
1613 2010-04-16  Gavin Barraclough  <barraclough@apple.com>
1614
1615         Reviewed by nobody, build fix.
1616
1617 2010-04-16  Gavin Barraclough  <barraclough@apple.com>
1618
1619         Reviewed by Oliver Hunt.
1620
1621         Bug 37730 - Remove JSC::UString dependencies from WebCore::StringImpl
1622         (Following on from bug #37675).
1623
1624         Make the argument ordering for UStringImpl's constructor & create
1625         methods match, when passed a shared buffer.
1626
1627         * JavaScriptCore.exp:
1628         * runtime/UStringImpl.cpp:
1629         (JSC::UStringImpl::create):
1630         * runtime/UStringImpl.h:
1631
1632 2010-04-15  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
1633
1634         Reviewed by Kenneth Rohde Christiansen.
1635
1636         Fix memory leak in QScriptEngine::evaluate().
1637
1638         QScriptEnginePrivate::evaluate should release temporary variables.
1639
1640         [Qt] QScriptEngine::evaluate has memory leak.
1641         https://bugs.webkit.org/show_bug.cgi?id=37596
1642
1643         * qt/api/qscriptengine_p.cpp:
1644         (QScriptEnginePrivate::evaluate):
1645         * qt/api/qscriptengine_p.h:
1646
1647 2010-04-14  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
1648
1649         Reviewed by Kenneth Rohde Christiansen.
1650
1651         Fix a memory leak in QScriptValue::inherits.
1652
1653         [Qt] QScriptValue::inherits has a memory leak.
1654         https://bugs.webkit.org/show_bug.cgi?id=37617
1655
1656         * qt/api/qscriptvalue_p.h:
1657         (QScriptValuePrivate::inherits):
1658
1659 2010-04-14  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
1660
1661         Reviewed by Kenneth Rohde Christiansen.
1662
1663         Fix a few memory leaks in QScriptEngine.
1664
1665         Syntax checking caused memory leak, not all temporary variables were released.
1666
1667         [Qt] Syntax checking  in the QtScript cause a memory leak.
1668         https://bugs.webkit.org/show_bug.cgi?id=37610
1669
1670         * qt/api/qscriptengine_p.cpp:
1671         (QScriptEnginePrivate::checkSyntax):
1672         * qt/api/qscriptsyntaxcheckresult.cpp:
1673         (QScriptSyntaxCheckResultPrivate::errorMessage):
1674         (QScriptSyntaxCheckResultPrivate::errorLineNumber):
1675
1676 2010-04-14  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
1677
1678         Reviewed by Kenneth Rohde Christiansen.
1679
1680         Fix memory leak inside QScriptEnginePrivate::makeJSValue.
1681
1682         QScriptEnginePrivate::makeJSValue should release temporary JSStringRef variable.
1683
1684         [Qt] tst_QScriptValue::toString has a memory leak.
1685         https://bugs.webkit.org/show_bug.cgi?id=37598
1686
1687         * qt/api/qscriptengine_p.h:
1688         (QScriptEnginePrivate::makeJSValue):
1689
1690 2010-04-14  Peter Varga  <pvarga@inf.u-szeged.hu>
1691
1692         Reviewed by Geoffrey Garen.
1693
1694         Move the YARR JIT fallback detection from RegexJIT.cpp to
1695         RegexCompiler.cpp.
1696
1697         https://bugs.webkit.org/show_bug.cgi?id=37571
1698
1699         * yarr/RegexCompiler.cpp:
1700         (JSC::Yarr::RegexPatternConstructor::atomBackReference):
1701         (JSC::Yarr::RegexPatternConstructor::quantifyAtom):
1702         * yarr/RegexJIT.cpp:
1703         (JSC::Yarr::RegexGenerator::generateTerm):
1704         (JSC::Yarr::RegexGenerator::RegexGenerator):
1705         (JSC::Yarr::jitCompileRegex):
1706         * yarr/RegexJIT.h:
1707         (JSC::Yarr::RegexCodeBlock::operator!):
1708         * yarr/RegexPattern.h:
1709         (JSC::Yarr::RegexPattern::RegexPattern):
1710         (JSC::Yarr::RegexPattern::reset):
1711
1712 2010-04-14  Kent Hansen  <kent.hansen@nokia.com>
1713
1714         Reviewed by Maciej Stachowiak.
1715
1716         Mac OS X: Use deployment target to determine whether memory tagging should be enabled
1717         https://bugs.webkit.org/show_bug.cgi?id=34888
1718
1719         When building on (Snow) Leopard but targeting Tiger
1720         (TARGETING_TIGER defined, BUILDING_ON_TIGER not defined),
1721         WebKit would crash on Tiger because the tags passed to mmap
1722         caused those function calls to fail.
1723
1724         Conversely, when building on Tiger but targeting Leopard
1725         (BUILDING_ON_TIGER defined, TARGETING_LEOPARD defined), WebKit
1726         would crash on Leopard because the tags passed to vm_map and
1727         vm_allocate caused those function calls to fail.
1728
1729         Solution: Use TARGETING_TIGER rather than BUILDING_ON_TIGER to
1730         govern the tag definitions. Use the same tags for vm_map and
1731         vm_allocate regardless of target, since they work on
1732         both. Fall back to the mmap tags that work on Tiger (that is,
1733         "no tags") if targeting Tiger, since those tags also work on
1734         Leopard.
1735
1736         * wtf/VMTags.h:
1737
1738 2010-04-12  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
1739
1740         Reviewed by nobody, build fix.
1741
1742         [Qt] Build fix for Mac when building with build-webkit --qt
1743
1744         Specifying no configuration on Mac builds WebCore both in debug
1745         and release. JavaScriptCore has to follow this rule as well.
1746
1747         * JavaScriptCore.pro:
1748
1749 2010-04-11  Mark Rowe  <mrowe@apple.com>
1750
1751         Reviewed by Sam Weinig.
1752
1753         <rdar://problem/7851332> Fix the build.
1754
1755         * wtf/FastMalloc.cpp:
1756         (WTF::TCMallocStats::): Initialize extra members of malloc_introspection_t to zero.
1757
1758 2010-04-09  Mikhail Naganov  <mnaganov@chromium.org>
1759
1760         Reviewed by Pavel Feldman.
1761
1762         Make CallIdentifier constructor to handle null urls.
1763
1764         https://bugs.webkit.org/show_bug.cgi?id=37341
1765
1766         * profiler/CallIdentifier.h:
1767         (JSC::CallIdentifier::CallIdentifier):
1768
1769 2010-04-09  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
1770
1771         Reviewed by Simon Hausmann.
1772
1773         [Qt] Fix crashes with package builds in release
1774
1775         Add NDEBUG to the defines for package build in JavaScriptCore.pri,
1776         so that it's consistently used for JavaScriptCore, WebCore, jsc and all
1777         other tools using wtf, etc. data structures directly. Mixing NDEBUG with
1778         non-NDEBUG builds causes crashes due to differences in data structures when
1779         assertions/checks are enabled.
1780
1781         * JavaScriptCore.pri:
1782
1783 2010-04-09  Patrick Gansterer  <paroga@paroga.com>
1784
1785         Reviewed by Darin Adler.
1786
1787         Implement NO_RETURN for COMPILER(MSVC).
1788         https://bugs.webkit.org/show_bug.cgi?id=33056 
1789
1790         Added NO_RETURN_WITH_VALUE for functions with non-void return type.
1791
1792         * jsc.cpp:
1793         * wtf/AlwaysInline.h:
1794         * wtf/FastMalloc.cpp:
1795
1796 2010-04-08  Kwang Yul Seo  <skyul@company100.net>
1797
1798         Reviewed by Simon Hausmann.
1799
1800         [WINCE] Check if ARM or _ARM_ is defined
1801         https://bugs.webkit.org/show_bug.cgi?id=37200
1802
1803         MSVC defines ARM and _ARM_ for Windows CE ARM. Define WTF_CPU_ARM=1
1804         when either ARM or _ARM_ is defined.
1805
1806         * wtf/Platform.h:
1807
1808 2010-04-08  Csaba Osztrogonác  <ossy@webkit.org>
1809
1810         Reviewed Oliver Hunt.
1811
1812         [Qt]r57240 broke Qt build (might be a gcc bug)
1813         https://bugs.webkit.org/show_bug.cgi?id=37253
1814
1815         Workaround until fix. On PLATFORM(QT) use inline instead of ALWAYS_INLINE.
1816
1817         * wtf/PassRefPtr.h: Qt guards added.
1818
1819 2010-04-07  Oliver Hunt  <oliver@apple.com>
1820
1821         Reviewed by Anders Carlsson.
1822
1823         Vector<UString> makes many needless calls to UString::UString and UString::~UString
1824
1825         Add a VectorTrait<UString> specialisation to allow vector to simply memset/memcpy
1826         data around.  Only difference from the VectorTrait<RefPtr<T> > traits is the inability
1827         to use memset to initialize data.
1828
1829         * runtime/UString.h:
1830         (WTF::):
1831
1832 2010-04-07  Oliver Hunt  <oliver@apple.com>
1833
1834         Reviewed by Geoff Garen.
1835
1836         Beat gcc with a clue bat -- force inlining of refIfNotNull and derefIfNotNull
1837
1838         * wtf/PassRefPtr.h:
1839
1840 2010-04-07  Kwang Yul Seo  <skyul@company100.net>
1841
1842         Reviewed by Darin Adler.
1843
1844         Replace isprint with isASCIIPrintable
1845         https://bugs.webkit.org/show_bug.cgi?id=37223
1846
1847         WebKit does not use functions in <ctype.h> as they are dependent on the current
1848         locale. Use the equivalent functions in <wtf/ASCIICType.h>. isASCIIPrintable
1849         replaces isprint.
1850
1851         * pcre/pcre_exec.cpp:
1852         (pchars):
1853
1854 2010-04-07  Enrica Casucci  <enrica@apple.com>
1855
1856         Reviewed by Darin Adler.
1857
1858         https://bugs.webkit.org/show_bug.cgi?id=37219
1859         
1860         This change disables text caret for the iPhone platflorm.
1861         
1862         * wtf/Platform.h: Disabled text caret for iPhone.
1863
1864 2010-04-06  Adam Barth  <abarth@webkit.org>
1865
1866         Reviewed by Eric Seidel.
1867
1868         REGRESSION: Worker termination via JS timeout may cause worker tests like fast/workers/worker-terminate.html fail.
1869         https://bugs.webkit.org/show_bug.cgi?id=36646
1870
1871         Add a new exception type for forcibly terminating a JavaScript stack.
1872         The new exception functions similarly to the
1873         InterruptedExecutionException but is conceptually different because
1874         execution is terminated instead of just interrupted.
1875
1876         * GNUmakefile.am:
1877             - Added new Terminator.h file.
1878         * JavaScriptCore.gypi:
1879             - Added new Terminator.h file.
1880         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
1881             - Added new Terminator.h file.
1882         * JavaScriptCore.xcodeproj/project.pbxproj:
1883             - Added new Terminator.h file.
1884         * interpreter/Interpreter.cpp:
1885         (JSC::Interpreter::throwException):
1886             - Fully unwind the stack for TerminatedExecutionException.
1887         (JSC::Interpreter::privateExecute):
1888             - Check if we've been terminated at the same time we check if we've
1889               timed out.
1890         * jit/JITStubs.cpp:
1891         (JSC::DEFINE_STUB_FUNCTION):
1892             - Check if we've been terminated at the same time we check if we've
1893               timed out.
1894         * runtime/Completion.cpp:
1895             - Some exceptions define special completion types so that calls can
1896               see why we terminated evaluation.
1897         (JSC::evaluate):
1898         * runtime/Completion.h:
1899             - Define a new completion type for termination.
1900         (JSC::):
1901         * runtime/ExceptionHelpers.cpp:
1902             - Define TerminatedExecutionException and refactor pseudo-RTTI
1903               virtual function to be more semantic.
1904         (JSC::InterruptedExecutionError::exceptionType):
1905         (JSC::TerminatedExecutionError::TerminatedExecutionError):
1906         (JSC::TerminatedExecutionError::exceptionType):
1907         (JSC::TerminatedExecutionError::toString):
1908         (JSC::createTerminatedExecutionException):
1909         * runtime/ExceptionHelpers.h:
1910             - Entry point for generating a TerminatedExecutionException.
1911         * runtime/JSGlobalData.cpp:
1912         (JSC::JSGlobalData::JSGlobalData):
1913             - Add a Terminator object that can be used to asynchronously
1914               terminate a JavaScript execution stack.
1915         * runtime/JSGlobalData.h:
1916         * runtime/JSObject.h:
1917         (JSC::JSObject::exceptionType):
1918             - Define that, by default, thrown objects have a normal exception
1919               type.
1920         * runtime/Terminator.h: Added.
1921             - Added a new controller object that can be used to terminate
1922               execution asynchronously.  This object is more or less a
1923               glorified bool.
1924         (JSC::Terminator::Terminator):
1925         (JSC::Terminator::termianteSoon):
1926         (JSC::Terminator::shouldTerminate):
1927
1928 2010-04-05  Oliver Hunt  <oliver@apple.com>
1929
1930         And another one.
1931
1932         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
1933
1934 2010-04-05  Oliver Hunt  <oliver@apple.com>
1935
1936         And another build fix.
1937
1938         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
1939
1940 2010-04-05  Oliver Hunt  <oliver@apple.com>
1941
1942         Build fix
1943
1944         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
1945
1946 2010-04-05  Oliver Hunt  <oliver@apple.com>
1947
1948         Reviewed by Gavin Barraclough.
1949
1950         Support weak maps in JSC
1951         https://bugs.webkit.org/show_bug.cgi?id=37132
1952
1953         Expose an API to allow creation of a map for storing
1954         weak JS references.
1955
1956         * API/JSWeakObjectMapRefInternal.h: Added.
1957         (OpaqueJSWeakObjectMap::create):
1958         (OpaqueJSWeakObjectMap::map):
1959         (OpaqueJSWeakObjectMap::~OpaqueJSWeakObjectMap):
1960         (OpaqueJSWeakObjectMap::OpaqueJSWeakObjectMap):
1961         * API/JSWeakObjectMapRefPrivate.cpp: Added.
1962         * API/JSWeakObjectMapRefPrivate.h: Added.
1963         * JavaScriptCore.exp:
1964         * JavaScriptCore.xcodeproj/project.pbxproj:
1965         * runtime/JSGlobalObject.h:
1966         (JSC::JSGlobalObject::registerWeakMap):
1967         (JSC::JSGlobalObject::deregisterWeakMap):
1968
1969 2010-04-05  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
1970
1971         Reviewed by Kenneth Rohde Christiansen.
1972
1973         [Symbian] Consolidate Symbian WINSCW environment configuration
1974         https://bugs.webkit.org/show_bug.cgi?id=37100
1975
1976         Move the "undefinition" of WIN32 and _WIN32 from WebCore/config.h
1977         to JavaScriptCore/wtf/Platform.h as it is not specific to WebCore.
1978
1979         PLATFORM(WIN) and OS(WIN) no longer needs to be undefined as
1980         undefining WIN32 takes care of it.
1981
1982         * wtf/Platform.h:
1983
1984 2010-04-03  Gavin Barraclough  <barraclough@apple.com>
1985
1986         Reviewed by Oliver Hunt.
1987
1988         https://bugs.webkit.org/show_bug.cgi?id=37068
1989         Change UString to use a 0 rep for null strings instead of a null object.
1990
1991         No performance impact.
1992
1993         * JavaScriptCore.exp:
1994         * runtime/InternalFunction.cpp:
1995         (JSC::InternalFunction::InternalFunction):
1996         * runtime/JSString.h:
1997         (JSC::RopeBuilder::JSString):
1998         * runtime/UString.cpp:
1999         (JSC::initializeUString):
2000         * runtime/UString.h:
2001         (JSC::UString::UString):
2002         (JSC::UString::data):
2003         (JSC::UString::size):
2004         (JSC::UString::isNull):
2005         (JSC::UString::isEmpty):
2006         (JSC::UString::cost):
2007
2008 2010-04-03  Balazs Kelemen  <kb@inf.u-szeged.hu>
2009
2010         Reviewed by Oliver Hunt.
2011
2012         Fix uninitalised members in CallLinkInfo and BytecodeGenerator.
2013
2014         https://bugs.webkit.org/show_bug.cgi?id=36816
2015
2016         * bytecode/CodeBlock.cpp:
2017         (JSC::CodeBlock::CodeBlock):
2018         * bytecode/CodeBlock.h:
2019         (JSC::CallLinkInfo::CallLinkInfo):
2020
2021 2010-04-03  yael aharon  <yael.aharon@nokia.com>
2022
2023         Reviewed by Darin Adler.
2024
2025         Enable HTMLProgressElement for Safari on OSX
2026         https://bugs.webkit.org/show_bug.cgi?id=36961
2027
2028         * Configurations/FeatureDefines.xcconfig:
2029
2030 2010-04-02  Ruben Van Boxem  <vanboxem.ruben@gmail.com>
2031
2032         Reviewed by Eric Seidel.
2033
2034         Mingw-w64 fixes for JavaScriptCore
2035         https://bugs.webkit.org/show_bug.cgi?id=35607
2036
2037         * runtime/Collector.cpp: use the msvc code for mingw-w64 (but not mingw-w32)
2038         (JSC::Heap::allocateBlock):
2039         (JSC::Heap::freeBlockPtr):
2040         (JSC::currentThreadStackBase):
2041         (JSC::currentThreadStackBase):
2042         * wtf/Platform.h: added COMPILER(MINGW64) check to differentiate between mingw.org and mingw-w64 functions
2043
2044 2010-04-02  Geoffrey Garen  <ggaren@apple.com>
2045
2046         Build fix: updated the .def file.
2047
2048         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2049
2050 2010-04-02  Geoffrey Garen  <ggaren@apple.com>
2051
2052         Reviewed by Oliver Hunt.
2053
2054         Inlined toThisString and toThisJSString to avoid virtual function call overhead
2055         https://bugs.webkit.org/show_bug.cgi?id=37039
2056         
2057         Maybe a 1% speedup on iBench JS.
2058
2059         * JavaScriptCore.exp: New exports.
2060
2061         * runtime/JSCell.cpp:
2062         * runtime/JSCell.h:
2063         * runtime/JSNumberCell.cpp:
2064         * runtime/JSNumberCell.h:
2065         * runtime/JSString.cpp:
2066         * runtime/JSString.h:
2067         * runtime/JSValue.h:
2068         * runtime/JSZombie.h:
2069         (JSC::JSZombie::toThisObject): Nixed the old virtual-type implementation.
2070
2071         * runtime/JSObject.h:
2072         (JSC::JSValue::toThisString):
2073         (JSC::JSValue::toThisJSString): Added the inlined implementation.
2074
2075 2010-04-02  Jeremy Moskovich  <jeremy@chromium.org>
2076
2077         Reviewed by Geoffrey Garen.
2078
2079         Beef up documentation for ASSERT* and CRASH macros a bit.
2080
2081         https://bugs.webkit.org/show_bug.cgi?id=36527
2082
2083         * wtf/Assertions.h:
2084
2085 2010-04-02  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
2086
2087         Unreviewed, minor build fix.
2088
2089         Change the order of the member initialisation list
2090         in constructor to match declaration order
2091
2092         * runtime/Collector.cpp:
2093         (JSC::Heap::Heap):
2094
2095 2010-04-01  Kinuko Yasuda  <kinuko@chromium.org>
2096
2097         Reviewed by Dmitry Titov.
2098
2099         Add FileThread for async file operation support in FileReader and FileWriter
2100         https://bugs.webkit.org/show_bug.cgi?id=36896
2101
2102         Add ENABLE_FILE_READER and ENABLE_FILE_WRITER flags.
2103
2104         * Configurations/FeatureDefines.xcconfig:
2105
2106 2010-03-31  Gavin Barraclough  <barraclough@apple.com>
2107
2108         Reviewed by NOBODY (windows build fix pt II).
2109
2110         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2111
2112 2010-03-31  Gavin Barraclough  <barraclough@apple.com>
2113
2114         Reviewed by NOBODY (windows build fix).
2115
2116         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2117
2118 2010-03-31  Gavin Barraclough  <barraclough@apple.com>
2119
2120         Reviewed by Geoff Garen.
2121
2122         Bug 36871 - Remove JSC::CString
2123         Use WTF::CString instead (which until recently was WebCore::CString).
2124
2125         * JavaScriptCore.exp:
2126         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2127         * runtime/UString.cpp:
2128         * runtime/UString.h:
2129
2130 2010-03-31  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
2131
2132         Unreviewed, fix after r56842.
2133
2134         Add UNUSED_PARAM a to silence warning.
2135
2136         * jit/JITStubs.cpp:
2137         (JSC::DEFINE_STUB_FUNCTION):
2138
2139 2010-03-31  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
2140
2141         Unreviewed, Symbian build fix.
2142
2143         Refactor JITStubs.cpp so that the list of STUB_FUNCTIONs
2144         are not dependent on the JSVALUE32_64 guard.
2145
2146         * jit/JITStubs.cpp: Place the JSVALUE32_64 guard inside 
2147         the body of cti_op_eq_strings.
2148         * jit/JITStubs.h: Remove JSVALUE32_64 guard from 
2149         cti_op_eq_strings stub.
2150
2151 2010-03-30  Gavin Barraclough  <barraclough@apple.com>
2152
2153         Reviewed by NOBODY (windows build fix).
2154
2155         Fixing b0rked version of JavaScriptCore.vcproj - added lines were truncated.
2156
2157         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2158
2159 2010-03-30  Gavin Barraclough  <barraclough@apple.com>
2160
2161         Rubber stamped by Sam Weinig.
2162
2163         https://bugs.webkit.org/show_bug.cgi?id=36866
2164         Move CString to WTF
2165
2166         * Android.mk:
2167         * GNUmakefile.am:
2168         * JavaScriptCore.exp:
2169         * JavaScriptCore.gypi:
2170         * JavaScriptCore.pro:
2171         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2172         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2173         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
2174         * JavaScriptCore.xcodeproj/project.pbxproj:
2175         * wtf/text: Added.
2176         * wtf/text/CString.cpp: Copied from WebCore/platform/text/CString.cpp.
2177         * wtf/text/CString.h: Copied from WebCore/platform/text/CString.h.
2178         (WTF::CStringBuffer::data):
2179         (WTF::CStringBuffer::length):
2180         (WTF::CStringBuffer::create):
2181         (WTF::CStringBuffer::CStringBuffer):
2182         (WTF::CStringBuffer::mutableData):
2183         (WTF::CString::CString):
2184         (WTF::CString::isNull):
2185         (WTF::CString::buffer):
2186         (WTF::operator!=):
2187
2188 2010-03-30  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
2189
2190         Reviewed by nobody, build break.
2191
2192         [Qt] Fix build break on Qt Mac.
2193
2194         DESTDIR path on Mac do not include the configuration path by default
2195         like on Windows. Have to force it.
2196
2197         * JavaScriptCore.pro:
2198
2199 2010-03-29  Alice Liu  <alice.liu@apple.com>
2200
2201         Reviewed by NOBODY (build fix).
2202
2203         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
2204         add JSObjectRefPrivate.h
2205
2206 2010-03-29  Chao-ying Fu  <fu@mips.com>
2207
2208         Reviewed by Oliver Hunt.
2209
2210         MIPS JIT Supports
2211         https://bugs.webkit.org/show_bug.cgi?id=30144
2212
2213         The following changes enable MIPS JIT.
2214
2215         * assembler/MIPSAssembler.h:
2216         (JSC::MIPSAssembler::lbu):
2217         (JSC::MIPSAssembler::linkWithOffset):
2218         * assembler/MacroAssemblerMIPS.h:
2219         (JSC::MacroAssemblerMIPS::load8):
2220         (JSC::MacroAssemblerMIPS::branch8):
2221         (JSC::MacroAssemblerMIPS::branchTest8):
2222         (JSC::MacroAssemblerMIPS::setTest8):
2223         (JSC::MacroAssemblerMIPS::setTest32):
2224         * jit/JIT.h:
2225         * jit/JITInlineMethods.h:
2226         (JSC::JIT::preserveReturnAddressAfterCall):
2227         (JSC::JIT::restoreReturnAddressBeforeReturn):
2228         * jit/JITOpcodes.cpp:
2229         * jit/JITStubs.cpp:
2230         (JSC::JITThunks::JITThunks):
2231         * jit/JITStubs.h:
2232         (JSC::JITStackFrame::returnAddressSlot):
2233         * wtf/Platform.h:
2234
2235 2010-02-26  Kenneth Rohde Christiansen  <kenneth@webkit.org>
2236
2237         Reviewed by Simon Fraser.
2238
2239         Add support for Widgets 1.0: View Mode Media Feature
2240         https://bugs.webkit.org/show_bug.cgi?id=35446
2241
2242         Add an enable flag for the Widgets (http://www.w3.org/TR/widgets-reqs/)
2243         and turn it on for Qt only.
2244
2245         * wtf/Platform.h:
2246
2247 2010-03-29  Patrick Gansterer  <paroga@paroga.com>
2248
2249         Reviewed by Darin Adler.
2250
2251         Corrected name of (u)int64_t compile time assert.
2252         https://bugs.webkit.org/show_bug.cgi?id=36739
2253
2254         int64_t_is_four_bytes -> int64_t_is_eight_bytes
2255
2256         * os-win32/stdint.h:
2257
2258 2010-03-29  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
2259
2260         Reviewed by Simon Hausmann.
2261
2262         [Qt] Use the -l syntax for linking against JavaScriptCore on Windows.
2263         This allow qmake to extract dependencies correctly when generating VS
2264         solutions.
2265
2266         * JavaScriptCore.pri:
2267
2268 2010-03-29  Thomas Zander  <t.zander@nokia.com>
2269
2270         Reviewed by Simon Hausmann.
2271
2272         https://bugs.webkit.org/show_bug.cgi?id=36742
2273
2274         gcc for Symbian doesn't support gcc extensions like atomicity.h - disable
2275
2276         * wtf/Threading.h: also detect os symbian
2277
2278 2010-03-28  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
2279
2280         Reviewed by Simon Hausmann.
2281
2282         [Qt] Remove the definition of WTF_CHANGES guards from the build system
2283         https://bugs.webkit.org/show_bug.cgi?id=31670
2284   
2285         * JavaScriptCore.pro: Remove the definition of WTF_CHANGES
2286         as it is already defined in config.h
2287
2288 2010-03-28  Kent Hansen  <kent.hansen@nokia.com>
2289
2290         Reviewed by Simon Hausmann.
2291
2292         [Qt] Add API for reporting additional memory cost of JavaScript objects
2293         https://bugs.webkit.org/show_bug.cgi?id=36650
2294
2295         * qt/api/qscriptengine.cpp:
2296         (QScriptEngine::reportAdditionalMemoryCost):
2297         * qt/api/qscriptengine.h:
2298         * qt/api/qscriptengine_p.h:
2299         (QScriptEnginePrivate::reportAdditionalMemoryCost):
2300         * qt/tests/qscriptengine/tst_qscriptengine.cpp:
2301         (tst_QScriptEngine::reportAdditionalMemoryCost):
2302
2303 2010-03-28  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
2304
2305         Reviewed by Simon Hausmann.
2306
2307         QScriptEngine API was enriched by globalObject() method
2308         which give an access to the global object.
2309
2310         [Qt] QScriptEngine doesn't give an access to global object
2311         https://bugs.webkit.org/show_bug.cgi?id=36603
2312
2313         * qt/api/qscriptengine.cpp:
2314         (QScriptEngine::globalObject):
2315         * qt/api/qscriptengine.h:
2316         * qt/api/qscriptengine_p.cpp:
2317         (QScriptEnginePrivate::globalObject):
2318         * qt/api/qscriptengine_p.h:
2319         * qt/tests/qscriptengine/tst_qscriptengine.cpp:
2320         (tst_QScriptEngine::globalObject):
2321
2322 2010-03-26  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
2323
2324         Reviewed by Simon Hausmann.
2325
2326         [Qt] Build JavaScriptCore as a static library.
2327         https://bugs.webkit.org/show_bug.cgi?id=36590
2328
2329         This patch takes what was left of the unused JavaScriptCore.pro
2330         and moved the compilation logic from JavaScriptCore.pri to
2331         JavaScriptCore.pro.
2332
2333         * JavaScriptCore.pri:
2334         * JavaScriptCore.pro:
2335         * jsc.pro:
2336         * qt/api/QtScript.pro:
2337
2338 2010-03-25  Gavin Barraclough  <barraclough@apple.com>
2339
2340         Reviewed by NOBODY (build fix).
2341
2342         * profiler/ProfileGenerator.cpp:
2343         (JSC::ProfileGenerator::willExecute):
2344         (JSC::ProfileGenerator::didExecute):
2345
2346 2010-03-25  Gavin Barraclough  <barraclough@apple.com>
2347
2348         Reviewed by Geoff Garen.
2349
2350         Bug 36611 - Cleanup JSC::CString
2351         Rename CString::c_str() -> CString::data(), CString::size() -> CString::length(),
2352         remove UString::getCString() (all uses are wrong, should use UString::UTF8String()).
2353
2354         * bytecode/CodeBlock.cpp:
2355         (JSC::CodeBlock::printUnaryOp):
2356         (JSC::CodeBlock::printBinaryOp):
2357         (JSC::CodeBlock::printConditionalJump):
2358         (JSC::CodeBlock::printGetByIdOp):
2359         (JSC::CodeBlock::printPutByIdOp):
2360         (JSC::printGlobalResolveInfo):
2361         (JSC::printStructureStubInfo):
2362         (JSC::CodeBlock::printStructure):
2363         (JSC::CodeBlock::printStructures):
2364         (JSC::CodeBlock::dump):
2365         * jsc.cpp:
2366         (functionPrint):
2367         (functionDebug):
2368         (runInteractive):
2369         (fillBufferWithContentsOfFile):
2370         * profiler/CallIdentifier.h:
2371         (JSC::CallIdentifier::c_str):
2372         * profiler/Profile.cpp:
2373         (JSC::Profile::debugPrintDataSampleStyle):
2374         * profiler/ProfileNode.cpp:
2375         (JSC::ProfileNode::debugPrintData):
2376         (JSC::ProfileNode::debugPrintDataSampleStyle):
2377         * runtime/DateConversion.cpp:
2378         (JSC::parseDate):
2379         * runtime/JSGlobalObjectFunctions.cpp:
2380         (JSC::encode):
2381         (JSC::globalFuncJSCPrint):
2382         * runtime/UString.cpp:
2383         (JSC::operator==):
2384         (JSC::UString::toDouble):
2385         * runtime/UString.h:
2386         (JSC::CString::length):
2387         (JSC::CString::data):
2388
2389 2010-03-25  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
2390
2391         Reviewed by nobody, build fix.
2392
2393         [Qt] Build fix on MSVC. Reverts r55633 for stdint.h
2394
2395         This file gets included in generated moc files which don't
2396         include the prefix header.
2397
2398         * os-win32/stdint.h:
2399
2400 2010-03-24  Gavin Barraclough  <barraclough@apple.com>
2401
2402         Reviewed by NOBODY (windows build fix).
2403
2404 2010-03-24  Gavin Barraclough  <barraclough@apple.com>
2405
2406         Reviewed by Sam Weinig.
2407
2408         Switch String::latin1, String::utf8, String::fromUTF8 to
2409         use WTF's Unicode conversion methods rather than TextEncoder.
2410         These methods only perform simple conversion, and don't need
2411         really require TextEncoder's full capability (to look up arbitrary
2412         encodings by name), switching to only be dependent on WTF will
2413         make it easier if we chose to move WebCore::String to WTF.
2414
2415         * JavaScriptCore.exp:
2416
2417 2010-03-24  Alexey Proskuryakov  <ap@apple.com>
2418
2419         Reviewed by Geoff Garen.
2420
2421         * wtf/FastMalloc.h: Added a using directive for fastMallocSize, like we do for all public
2422         WTF symbols. Also sorted the list alphabetically.
2423
2424 2010-03-23  Gavin Barraclough  <barraclough@apple.com>
2425
2426         Reviewed by NOBODY (speculative windows build fix part II).
2427
2428 2010-03-23  Gavin Barraclough  <barraclough@apple.com>
2429
2430         Reviewed by NOBODY (speculative windows build fix).
2431
2432 2010-03-23  Gavin Barraclough  <barraclough@apple.com>
2433
2434         Reviewed by Oliver Hunt.
2435
2436         Bug 36519 - JSGlobalContextRelease is unnecessarily slow
2437
2438         Since [ http://trac.webkit.org/changeset/35917 ], calling
2439         JSGlobalContextRelease always triggers a GC heap collection
2440         (if not a full destroy). As per 35917's changelog "This is
2441         only really necessary when the (JSGlobalObject's) last
2442         reference is released, but there is no way to determine that,
2443         and no harm in collecting slightly more often."
2444         
2445         Well, we now know of cases of API clients who are harmed by
2446         the performance penalty of collecting too often, so it's time
2447         to add a way to determine whether a call to JSGlobalContextRelease
2448         is removing the last protect from it's global object.  If further
2449         protects are retaining the global object (likely from other
2450         JSGlobalContextRefs), then don't trigger a GC collection.
2451
2452         * API/JSContextRef.cpp:
2453         * runtime/Collector.cpp:
2454         (JSC::Heap::unprotect): return a boolean indicating that the value is now unprotected.
2455         * runtime/Collector.h:
2456         * wtf/HashCountedSet.h:
2457         (WTF::::remove): return a boolean indicating whether the value was removed from the set.
2458
2459 2010-03-23  Mark Rowe  <mrowe@apple.com>
2460
2461         Build fix.
2462
2463         * runtime/ArrayPrototype.cpp:
2464         (JSC::arrayProtoFuncSplice): Some versions of GCC emit a warning about the implicit 64- to 32-bit truncation
2465         that takes place here. An explicit cast is sufficient to silence it.
2466
2467 2010-03-23  Alexey Proskuryakov  <ap@apple.com>
2468
2469         Build fix.
2470
2471         * runtime/ArrayPrototype.cpp: (JSC::arrayProtoFuncSplice): Fixed a typo - length doesn't
2472         need to be converted with toInteger().
2473
2474 2010-03-23  Alexey Proskuryakov  <ap@apple.com>
2475
2476         Reviewed by Geoff Garen.
2477
2478         https://bugs.webkit.org/show_bug.cgi?id=36511
2479         <rdar://problem/7753498> Safari freezes when using SPUTNIK JavaScript conformance check
2480
2481         Test: fast/js/sputnik-S15.4.4.12_A3_T3.html
2482
2483         * runtime/ArrayPrototype.cpp: (JSC::arrayProtoFuncSplice): We were incorrectly computing
2484         the start offset, and iterated over (almost) all integers. Note that this can be fixed
2485         without using doubles, but the code would be much more complicated, and there is no important
2486         reason to stick to integers here.
2487
2488 2010-03-23  Kent Hansen  <kent.hansen@nokia.com>
2489
2490         Reviewed by Darin Adler.
2491
2492         Fix compilation on Itanium in 32-bit mode
2493         https://bugs.webkit.org/show_bug.cgi?id=36494
2494
2495         * wtf/Platform.h: Introduce CPU(IA64_32). Don't define
2496           WTF_USE_JSVALUE64 if the CPU is in 32-bit mode.
2497
2498 2010-03-23  Geoffrey Garen  <ggaren@apple.com>
2499
2500         Reviewed by Mark Rowe.
2501
2502         Interpreter fix for <rdar://problem/7728196> REGRESSION (r46701): -(-2147483648)
2503         evaluates to -2147483648 on 32 bit (35842)
2504
2505         * interpreter/Interpreter.cpp:
2506         (JSC::Interpreter::privateExecute): Only take the fast negate path if
2507         a bit other than bit 31 is set. If none of bits 0-30 are set, then the
2508         value we're negating can only be 0 or -2147483648, and neither can be
2509         negated in int space.
2510
2511         * jit/JITArithmetic.cpp:
2512         (JSC::JIT::emit_op_negate):
2513         (JSC::JIT::emitSlow_op_negate): Updated the JIT implementation to match
2514         the interpreter, since it's slightly simpler.
2515
2516 2010-03-22  Siddharth Mathur  <siddharth.mathur@nokia.com>
2517
2518         Reviewed by Laszlo Gombos.
2519
2520         [Symbian] More efficient aligned memory allocation for JSC Collector
2521         https://bugs.webkit.org/show_bug.cgi?id=34350
2522
2523         * JavaScriptCore.pri: Added 2 new Symbian source files and HAL linkage
2524
2525         * runtime/Collector.cpp: Reduced port-specific code and added private data member
2526         (JSC::Heap::Heap):
2527         (JSC::Heap::~Heap):
2528         (JSC::Heap::destroy):
2529         (JSC::Heap::allocateBlock):
2530         (JSC::Heap::freeBlockPtr):
2531
2532         * runtime/Collector.h: Added private data member
2533
2534         * wtf/symbian: Added.
2535         * wtf/symbian/BlockAllocatorSymbian.cpp: Added.
2536         (WTF::AlignedBlockAllocator::AlignedBlockAllocator): Helper class to allocate 
2537         aligned blocks more efficiently as required by Collector
2538         (WTF::AlignedBlockAllocator::alloc):
2539         (WTF::AlignedBlockAllocator::free):
2540         (WTF::AlignedBlockAllocator::destroy):
2541         (WTF::AlignedBlockAllocator::~AlignedBlockAllocator):
2542         * wtf/symbian/BlockAllocatorSymbian.h: Added.
2543
2544 2010-03-22  Geoffrey Garen  <ggaren@apple.com>
2545
2546         Reviewed by Sam Weinig.
2547
2548         Fixed <rdar://problem/7728196> REGRESSION (r46701): -(-2147483648)
2549         evaluates to -2147483648 on 32 bit (35842)
2550         
2551         Two ways to fix the same bug:
2552         
2553         1. Check for overflow when negating, since negating the largest negative
2554         int causes overflow.
2555         
2556         2. Constant-fold even when negating a negative, since, like they say in
2557         high school, "math works."
2558
2559         * assembler/MacroAssemblerARM.h:
2560         (JSC::MacroAssemblerARM::branchNeg32):
2561         * assembler/MacroAssemblerX86Common.h:
2562         (JSC::MacroAssemblerX86Common::branchNeg32): Added a branching version
2563         of the negate operator.
2564
2565         * jit/JITArithmetic.cpp:
2566         (JSC::JIT::emit_op_negate): Use the branching version of the negate 
2567         operator to check for overflow.
2568
2569         (JSC::JIT::emitSlow_op_negate): Link the check for overflow to a slow case.
2570         (We could emit inline code for this, since we know what the result would
2571         be, but that's probably just a waste of generated code.)
2572
2573         * parser/Grammar.y: Constant fold even when negating a negative.
2574
2575 2010-03-22  David Kilzer  <ddkilzer@apple.com>
2576
2577         <http://webkit.org/b/36431> Clean up 'int' use in UString.cpp after r54789
2578
2579         Reviewed by Darin Adler.
2580
2581         * runtime/UString.cpp:
2582         (JSC::UString::from): Changed argument type from 'unsigned int'
2583         to 'unsigned' to match WebKit coding style.
2584         (JSC::UString::find): Changed static_cast<int>() to
2585         static_cast<unsigned>() now that this method returns unsigned.
2586         (JSC::UString::rfind): Ditto.
2587         * runtime/UString.h:
2588         (JSC::UString::from): Changed argument type from 'unsigned int'
2589         to 'unsigned' to match WebKit coding style.
2590
2591 2010-03-22  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
2592
2593         Reviewed by Kenneth Rohde Christiansen.
2594
2595         Add support for syntax checking in the QtScript API.
2596
2597         New class was created; the QScriptSyntaxCheckResult which main
2598         responsibility is to provide results of the ECMA Script code
2599         syntax check. The class is not fully functional as the JSC C API
2600         doesn't expose an error column number, but it is a good start point
2601         for a future development.
2602
2603         [Qt] QtScript functionality should be extended by syntax checking.
2604         https://bugs.webkit.org/show_bug.cgi?id=36123
2605
2606         * qt/api/QtScript.pro:
2607         * qt/api/qscriptengine.cpp:
2608         (QScriptEngine::checkSyntax):
2609         * qt/api/qscriptengine.h:
2610         * qt/api/qscriptengine_p.cpp:
2611         (QScriptEnginePrivate::checkSyntax):
2612         * qt/api/qscriptengine_p.h:
2613         * qt/api/qscriptsyntaxcheckresult.cpp: Added.
2614         (QScriptSyntaxCheckResult::QScriptSyntaxCheckResult):
2615         (QScriptSyntaxCheckResult::~QScriptSyntaxCheckResult):
2616         (QScriptSyntaxCheckResult::operator=):
2617         (QScriptSyntaxCheckResult::state):
2618         (QScriptSyntaxCheckResult::errorLineNumber):
2619         (QScriptSyntaxCheckResult::errorColumnNumber):
2620         (QScriptSyntaxCheckResult::errorMessage):
2621         * qt/api/qscriptsyntaxcheckresult.h: Added.
2622         * qt/api/qscriptsyntaxcheckresult_p.cpp: Added.
2623         (QScriptSyntaxCheckResultPrivate::~QScriptSyntaxCheckResultPrivate):
2624         (QScriptSyntaxCheckResultPrivate::errorMessage):
2625         (QScriptSyntaxCheckResultPrivate::errorLineNumber):
2626         * qt/api/qscriptsyntaxcheckresult_p.h: Added.
2627         (QScriptSyntaxCheckResultPrivate::get):
2628         (QScriptSyntaxCheckResultPrivate::QScriptSyntaxCheckResultPrivate):
2629         (QScriptSyntaxCheckResultPrivate::state):
2630         (QScriptSyntaxCheckResultPrivate::errorColumnNumber):
2631         * qt/tests/qscriptengine/tst_qscriptengine.cpp:
2632         (tst_QScriptEngine::checkSyntax_data):
2633         (tst_QScriptEngine::checkSyntax):
2634
2635 2010-03-21  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
2636
2637         Reviewed by Simon Hausmann.
2638
2639         New class; QScriptProgram.
2640
2641         The class should be used to evaluate the same script multiple times
2642         more efficiently.
2643
2644         [Qt] QtScript should have QScriptProgram class
2645         https://bugs.webkit.org/show_bug.cgi?id=36008
2646
2647         * qt/api/QtScript.pro:
2648         * qt/api/qscriptengine.cpp:
2649         (QScriptEngine::evaluate):
2650         * qt/api/qscriptengine.h:
2651         * qt/api/qscriptengine_p.cpp:
2652         (QScriptEnginePrivate::evaluate):
2653         * qt/api/qscriptengine_p.h:
2654         (QScriptEnginePrivate::evaluate):
2655         * qt/api/qscriptprogram.cpp: Added.
2656         (QScriptProgram::QScriptProgram):
2657         (QScriptProgram::~QScriptProgram):
2658         (QScriptProgram::operator=):
2659         (QScriptProgram::isNull):
2660         (QScriptProgram::sourceCode):
2661         (QScriptProgram::fileName):
2662         (QScriptProgram::firstLineNumber):
2663         (QScriptProgram::operator==):
2664         (QScriptProgram::operator!=):
2665         * qt/api/qscriptprogram.h: Added.
2666         * qt/api/qscriptprogram_p.h: Added.
2667         (QScriptProgramPrivate::get):
2668         (QScriptProgramPrivate::QScriptProgramPrivate):
2669         (QScriptProgramPrivate::~QScriptProgramPrivate):
2670         (QScriptProgramPrivate::isNull):
2671         (QScriptProgramPrivate::sourceCode):
2672         (QScriptProgramPrivate::fileName):
2673         (QScriptProgramPrivate::firstLineNumber):
2674         (QScriptProgramPrivate::operator==):
2675         (QScriptProgramPrivate::operator!=):
2676         (QScriptProgramPrivate::program):
2677         (QScriptProgramPrivate::file):
2678         (QScriptProgramPrivate::line):
2679         * qt/tests/qscriptengine/tst_qscriptengine.cpp:
2680         (tst_QScriptEngine::evaluateProgram):
2681
2682 2010-03-21  David Kilzer  <ddkilzer@apple.com>
2683
2684         Blind attempt #2 to fix the Windows build after r56314
2685
2686         * API/tests/testapi.c: Include JSObjectRefPrivate.h for the new
2687         methods instead of declaring them locally (and non-extern).
2688         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2689         Backed out previous change.
2690
2691 2010-03-21  David Kilzer  <ddkilzer@apple.com>
2692
2693         Blind attempt to fix the Windows build after r56314
2694
2695         Try to fix the following errors on the Windows buildbot:
2696
2697             Linking...
2698             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)
2699             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)
2700             C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\bin\testapi.exe : fatal error LNK1120: 2 unresolved externals
2701
2702         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Added
2703         missing symbols to be exported.
2704
2705 2010-03-21  Oliver Hunt  <oliver@apple.com>
2706
2707         Reviewed by Maciej Stachowiak.
2708
2709         Documentation fix for previous patch.
2710
2711         * API/JSObjectRefPrivate.h:
2712
2713 2010-03-20  Oliver Hunt  <oliver@apple.com>
2714
2715         Reviewed by Maciej Stachowiak.
2716
2717         JSC needs an API to allow custom objects to have aprivate GC-accessible properties
2718         https://bugs.webkit.org/show_bug.cgi?id=36420
2719
2720         Add new API methods to support "private" properties on custom
2721         objects.
2722
2723         * API/JSCallbackObject.h:
2724         (JSC::JSCallbackObjectData::JSCallbackObjectData):
2725         (JSC::JSCallbackObjectData::~JSCallbackObjectData):
2726         (JSC::JSCallbackObjectData::getPrivateProperty):
2727         (JSC::JSCallbackObjectData::setPrivateProperty):
2728         (JSC::JSCallbackObjectData::deletePrivateProperty):
2729         (JSC::JSCallbackObjectData::markChildren):
2730         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty):
2731         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty):
2732         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::deletePrivateProperty):
2733         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::markChildren):
2734         (JSC::JSCallbackObject::getPrivateProperty):
2735         (JSC::JSCallbackObject::setPrivateProperty):
2736         (JSC::JSCallbackObject::deletePrivateProperty):
2737         (JSC::JSCallbackObject::markChildren):
2738         * API/JSObjectRef.cpp:
2739         (JSObjectGetPrivateProperty):
2740         (JSObjectSetPrivateProperty):
2741         (JSObjectDeletePrivateProperty):
2742         * API/JSObjectRefPrivate.h: Added.
2743         * API/tests/testapi.c:
2744         (main):
2745         * JavaScriptCore.exp:
2746         * JavaScriptCore.xcodeproj/project.pbxproj:
2747
2748 2010-03-20  Kevin Ollivier  <kevino@theolliviers.com>
2749
2750         [wx] Build fixes after introduction of Brew files.
2751
2752         * wscript:
2753
2754 2010-03-18  Tom Callaway  <tcallawa@redhat.com>
2755
2756         Reviewed by Darin Adler.
2757
2758         Bug 35429: Fix compile on SPARC64
2759         https://bugs.webkit.org/show_bug.cgi?id=35429
2760
2761         * wtf/Platform.h: Set WTF_USE_JSVALUE64 for SPARC64
2762
2763 2010-03-18  Oliver Hunt  <oliver@apple.com>
2764
2765         Reviewed by Sam Weinig.
2766
2767         Add API to directly expose JSON parsing
2768         https://bugs.webkit.org/show_bug.cgi?id=34887
2769
2770         Add API to expose JSON parsing directly, and add tests to testapi
2771
2772         * API/JSValueRef.cpp:
2773         (JSValueMakeFromJSONString):
2774         (JSValueCreateJSONString):
2775         * API/tests/testapi.c:
2776         (main):
2777         * JavaScriptCore.exp:
2778         * runtime/JSONObject.cpp:
2779         (JSC::JSONStringify):
2780         * runtime/JSONObject.h:
2781
2782 2010-03-16  Sam Weinig  <sam@webkit.org>
2783
2784         Reviewed by Darin Adler and Mark Rowe.
2785
2786         Update WebKit availability macros for release after 4.0.
2787
2788         * API/WebKitAvailability.h:
2789
2790 2010-03-17  Oliver Hunt  <oliver@apple.com>
2791
2792         Reviewed by Gavin Barraclough.
2793
2794         undefined, NaN, and Infinity should be ReadOnly
2795         https://bugs.webkit.org/show_bug.cgi?id=36263
2796
2797         Simply add the ReadOnly flag to these properties.
2798
2799         * runtime/JSGlobalObject.cpp:
2800         (JSC::JSGlobalObject::reset):
2801
2802 2010-03-17  Darin Adler  <darin@apple.com>
2803
2804         Reviewed by Oliver Hunt.
2805
2806         Speed up Math.round a little by removing unneeded special case
2807         https://bugs.webkit.org/show_bug.cgi?id=36107
2808
2809         Test: fast/js/math.html
2810
2811         * runtime/MathObject.cpp:
2812         (JSC::mathProtoFuncRound): This function had a special case for numbers
2813         between -0.5 and -0.0 to return -0.0. But the algorithm in the function
2814         already yields -0.0 for those cases, so the extra checking and branching
2815         is unneeded.
2816
2817 2010-03-17  Mike Homey  <glandium@debian.org>
2818
2819         Reviewed by Gustavo Noronha.
2820
2821         Build fix for SPARC. Fix missing macro value.
2822
2823         * wtf/Platform.h:
2824
2825 2010-03-16  Gavin Barraclough  <barraclough@apple.com>
2826
2827         Reviewed by Oliver Hunt, Darin Adler.
2828
2829         Bug 36083 - REGRESSION (r55772-r55834): Crash in JavaScriptCore RegExp code on PowerPC
2830
2831         The problem is a bug in our port of PCRE - that a read may take place from the first character in an
2832         empty string.  For the time being, revert to using a valid pointer in the data segment rather than
2833         an invalid non-null pointer into the zero-page for the empty string's data pointer.  A better fix for
2834         this will be to remove PCRE.
2835
2836         * runtime/UStringImpl.cpp:
2837         (JSC::UStringImpl::empty):
2838
2839 2010-03-16  Darin Adler  <darin@apple.com>
2840
2841         Rolled out r56081 since it broke the Windows build.
2842
2843 2010-03-16  Zoltan Horvath  <zoltan@webkit.org>
2844
2845         Reviewed by Darin Adler.
2846
2847         Remove extra <new> include and add guards to operator new/delete definitions
2848         https://bugs.webkit.org/show_bug.cgi?id=35967
2849
2850         Remove extra <new> header include from FastAlloc.cpp since it is included in 
2851         FastAlloc.h. Add ENABLE(GLOBAL_FASTMALLOC_NEW) macro guard to operator
2852         new/delete/new []/delete [] definitions.
2853
2854         * wtf/FastMalloc.cpp:
2855
2856 2010-03-15  Kwang Yul Seo  <skyul@company100.net>
2857
2858         Reviewed by Eric Seidel.
2859
2860         [BREWMP] Add a function to create a BREW instance without local variable declarations.
2861         https://bugs.webkit.org/show_bug.cgi?id=34705
2862
2863         Add a template function to create a BREW instance in one line.
2864
2865         * wtf/brew/ShellBrew.h: Added.
2866         (WTF::createInstance):
2867
2868 2010-03-15  Geoffrey Garen  <ggaren@apple.com>
2869
2870         Not reviewed.
2871
2872         Removed a now-incorrect comment I forgot to remove in my last check-in.
2873
2874         * wtf/FastMalloc.cpp:
2875         (WTF::TCMalloc_PageHeap::scavenge):
2876
2877 2010-03-15  Geoffrey Garen  <ggaren@apple.com>
2878
2879         Reviewed by Sam Weinig.
2880
2881         Fixed a portion of:
2882         <rdar://problem/7165917> | https://bugs.webkit.org/show_bug.cgi?id=28676
2883         Safari 4 does not release memory back to the operating system fast enough (28676)
2884
2885         Every few seconds, release a percentage of the minimum unused page count
2886         during that time period.
2887
2888         SunSpider reports no change, command-line or in-browser, Mac or Windows.
2889         
2890         * wtf/FastMalloc.cpp:
2891         (WTF::TCMalloc_PageHeap::init):
2892         (WTF::TCMalloc_PageHeap::signalScavenger):
2893         (WTF::TCMalloc_PageHeap::initializeScavenger): Renamed shouldContinueScavenging
2894         to shouldScavenge, since scavenging is no longer something that we interrupt.
2895
2896         (WTF::TCMalloc_PageHeap::scavenge): The new scavenging algorithm. Fixes
2897         a bug where the old code would release only one item from each size class
2898         per scavenge, potentially leaving large numbers of large-sized objects
2899         unreleased for a long time.
2900
2901         (WTF::TCMalloc_PageHeap::shouldScavenge):
2902         (WTF::TCMalloc_PageHeap::New):
2903         (WTF::TCMalloc_PageHeap::AllocLarge):
2904         (WTF::TCMalloc_PageHeap::Delete):
2905         (WTF::TCMalloc_PageHeap::GrowHeap):
2906         (WTF::TCMalloc_PageHeap::scavengerThread):
2907         (WTF::TCMalloc_PageHeap::periodicScavenge): Updated to track the minimum
2908         value of free_committed_pages_ during a given scavenge period.
2909
2910 2010-03-15  Gavin Barraclough  <barraclough@apple.com>
2911
2912         Reviewed by Sam Weinig.
2913
2914         https://bugs.webkit.org/show_bug.cgi?id=35843
2915         Re-land reverted fix to JSString::getIndex()
2916
2917         Calling getIndex() on a JSString in rope form may result in a JSException being thrown
2918         if there is insuficient memory so value(exec) returns UString() with length zero,
2919         which will be passed to jsSingleCharacterSubstring.
2920         Add a slow case function to trap the error & return a safe null value, until the
2921         exception is handled.
2922
2923         * runtime/JSString.cpp:
2924         (JSC::JSString::getIndexSlowCase):
2925         (JSC::JSString::getStringPropertyDescriptor):
2926         * runtime/JSString.h:
2927         (JSC::jsSingleCharacterSubstring):
2928         (JSC::JSString::getIndex):
2929         (JSC::jsSingleCharacterString):
2930         (JSC::JSString::getStringPropertySlot):
2931
2932 2010-03-04  Kenneth Rohde Christiansen  <kenneth@webkit.org>
2933
2934         Reviewed by Adam Roben.
2935
2936         Add a long long version of abs() for MSVC.
2937
2938         * wtf/MathExtras.h:
2939         (abs):
2940
2941 2010-03-15  Gabor Loki  <loki@webkit.org>
2942
2943         Reviewed by Gavin Barraclough.
2944
2945         Combine ctiTrampolines on ARM and Thumb-2
2946         https://bugs.webkit.org/show_bug.cgi?id=36014
2947
2948         * jit/JITStubs.cpp:
2949         (JSC::JITThunks::JITThunks):
2950
2951 2010-03-12  Gavin Barraclough  <barraclough@apple.com>
2952
2953         Reviewed by NOBODY (build fix).
2954
2955         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2956
2957 2010-03-12  Gavin Barraclough  <barraclough@apple.com>
2958
2959         Reviewed by NOBODY (build fix).
2960
2961         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2962
2963 2010-03-11  Gavin Barraclough  <barraclough@apple.com>
2964
2965         Reviewed by Oliver Hunt.
2966
2967         Bug 36075 - Clean up screwyness re static string impls & Identifiers.
2968
2969         * API/JSClassRef.cpp:
2970         (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.
2971         * JavaScriptCore.exp:
2972         * runtime/Identifier.cpp:
2973         (JSC::Identifier::add): No need to explicitly hash null reps, this is done in the ststic UStringImpl constructor.
2974         (JSC::Identifier::addSlowCase): UStringImpl::empty() handled & checkCurrentIdentifierTable now called in the header.
2975         (JSC::Identifier::checkCurrentIdentifierTable): Replaces checkSameIdentifierTable (this no longer checked the rep since the identifierTable pointer was removed from UString::Rep long ago).
2976         * runtime/Identifier.h:
2977         (JSC::Identifier::add): Replace call to checkSameIdentifierTable with call to checkCurrentIdentifierTable at head of function.
2978         * runtime/UStringImpl.cpp:
2979         (JSC::UStringImpl::~UStringImpl): Remove call to checkConsistency - this function no longer checks anything interesting.
2980         * runtime/UStringImpl.h:
2981         (JSC::UStringOrRopeImpl::UStringOrRopeImpl): Set s_refCountFlagIsIdentifier in static constructor.
2982         (JSC::UStringImpl::UStringImpl): remove calls to checkConsistency (see above), add new ASSERT to substring constructor.
2983         (JSC::UStringImpl::setHash): ASSERT not static (static strings set the hash in their constructor, should not reach this code path).
2984         (JSC::UStringImpl::create): Add missing ASSERT.
2985         (JSC::UStringImpl::setIsIdentifier): ASSERT !isStatic() (static strings hash set in constructor).
2986
2987 2010-03-12  Peter Varga  <pvarga@inf.u-szeged.hu>
2988
2989         Reviewed by David Levin.
2990
2991         Two functions tryConsumeCharacter() and tryConsumeCharacterClass() are
2992         removed from yarr/RegexInterpreter.cpp because they are never called.
2993
2994         * yarr/RegexInterpreter.cpp:
2995
2996 2010-03-11  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
2997
2998         Reviewed by Simon Hausmann.
2999
3000         The JSNative state was renamed to JSPrimitive. The new name better
3001         coresponds to the ECMAScript standard.
3002
3003         Enum QScriptValuePrivate::States was renamed to State to obey Qt
3004         coding style rules ("States" name suggests that a state could
3005         mixed together with an other state using bitwise logic operators.
3006
3007         [Qt] QScriptValuePrivate::States has naming issues
3008         https://bugs.webkit.org/show_bug.cgi?id=35968
3009
3010         * qt/api/qscriptvalue_p.h:
3011         (QScriptValuePrivate::):
3012         (QScriptValuePrivate::QScriptValuePrivate):
3013         (QScriptValuePrivate::isBool):
3014         (QScriptValuePrivate::isNumber):
3015         (QScriptValuePrivate::isNull):
3016         (QScriptValuePrivate::isString):
3017         (QScriptValuePrivate::isUndefined):
3018         (QScriptValuePrivate::toString):
3019         (QScriptValuePrivate::toNumber):
3020         (QScriptValuePrivate::toBool):
3021         (QScriptValuePrivate::assignEngine):
3022         (QScriptValuePrivate::refinedJSValue):
3023
3024 2010-03-11  Gavin Barraclough  <barraclough@apple.com>
3025
3026         Reviewed by NOBODY (Windows build fix).
3027
3028         Add export.
3029
3030         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3031
3032 2010-03-11  Gavin Barraclough  <barraclough@apple.com>
3033
3034         Reviewed by NOBODY (Windows build fix).
3035
3036         Add export.
3037
3038         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3039
3040 2010-03-11  Gavin Barraclough  <barraclough@apple.com>
3041
3042         Rubber stamped by Oliver Hunt.
3043
3044         Remove nonsense comments used in development & commited in error.
3045
3046         * runtime/UStringImpl.h:
3047
3048 2010-03-11  Gavin Barraclough  <barraclough@apple.com>
3049
3050         Reviewed by NOBODY (Windows build fix).
3051
3052         Remove export.
3053
3054         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3055
3056 2010-03-11  Gavin Barraclough  <barraclough@apple.com>
3057
3058         Reviewed by Oliver Hunt.
3059
3060         https://bugs.webkit.org/show_bug.cgi?id=36041
3061         Remove unnecessary differences in common code between WebCore::StringImpl & JSC::UStringImpl
3062
3063         Much of the code in WebCore::StringImpl and JSC::UStringImpl is now very similar,
3064         but has trivial and unnecessary formatting differences, such as the exact wording
3065         of comments, missing ASSERTs, functions implemented in the .h vs .cpp etc.
3066
3067         * runtime/Identifier.cpp:
3068         (JSC::Identifier::add): UStringImpl::empty() now automatically hashes, uas per WebCore strings.
3069         (JSC::Identifier::addSlowCase): UStringImpl::empty() now automatically hashes, uas per WebCore strings.
3070         * runtime/UStringImpl.cpp:
3071         (JSC::UStringImpl::~UStringImpl): Only call bufferOwnership() once, add missing ASSERTs.
3072         (JSC::UStringImpl::createUninitialized): Move from .h, not commonly called, no need to inline.
3073         (JSC::UStringImpl::create): Move from .h, not commonly called, no need to inline.
3074         (JSC::UStringImpl::sharedBuffer): Rewritten to more closely match WebCore implementation, remove need for separate baseSharedBuffer() method.
3075         * runtime/UStringImpl.h:
3076         (JSC::UStringImpl::UStringImpl): Automatically hash static strings, ASSERT m_data & m_length are non-null/non-zero in non-static strings.
3077         (JSC::UStringImpl::setHash): Add missing ASSERT.
3078         (JSC::UStringImpl::create): Moved to .cpp / added missing check for empty string creation.
3079         (JSC::UStringImpl::adopt): Vector.size() returns size_t, not unsigned.
3080         (JSC::UStringImpl::cost): Renamed m_bufferSubstring -> m_substringBuffer
3081         (JSC::UStringImpl::hash): Reordered in file.
3082         (JSC::UStringImpl::existingHash): Reordered in file.
3083         (JSC::UStringImpl::computeHash): Reordered in file, renamed parameter.
3084         (JSC::UStringImpl::checkConsistency): rewrote ASSERT.
3085         (JSC::UStringImpl::bufferOwnership): Return type should be BufferOwnership.
3086         (JSC::UStringImpl::): Moved friends to head of class.
3087
3088 2010-03-11  Mark Rowe  <mrowe@apple.com>
3089
3090         Reviewed by David Kilzer.
3091
3092         <rdar://problem/7745082> Make it possible to build WebKit for older Mac OS X versions from the current Mac OS X version
3093
3094         Default to using the appropriate SDK if the target Mac OS X version is not the current Mac OS X version.
3095
3096         * Configurations/Base.xcconfig:
3097
3098 2010-03-11  Mark Rowe  <mrowe@apple.com>
3099
3100         Reviewed by Tim Hatcher.
3101
3102         <rdar://problem/7745082> Make it possible to build WebKit for older Mac OS X versions from the current Mac OS X version
3103
3104         Introduce TARGET_MAC_OS_X_VERSION_MAJOR to represent the Mac OS X version that is being targeted.  It defaults to the
3105         current Mac OS X version unless otherwise specified.
3106
3107         Key off TARGET_MAC_OS_X_VERSION_MAJOR where we'd previously been keying off MAC_OS_X_VERSION_MAJOR.
3108
3109         Explicitly map from the target Mac OS X version to the preferred compiler since Xcode's default compiler choice
3110         may not be usable when targetting a different Mac OS X version.
3111
3112         Key off TARGET_GCC_VERSION rather than MAC_OS_X_VERSION_MAJOR in locations where we'd previously been keying off
3113         MAC_OS_X_VERSION_MAJOR but the decision is really related to the compiler version being used.
3114
3115         * Configurations/Base.xcconfig:
3116         * Configurations/DebugRelease.xcconfig:
3117         * Configurations/FeatureDefines.xcconfig:
3118         * Configurations/JavaScriptCore.xcconfig:
3119         * Configurations/Version.xcconfig:
3120
3121 2010-03-11  Simon Fraser  <simon.fraser@apple.com>
3122
3123         Reviewed by Mark Rowe.
3124
3125         Sort the project file.
3126
3127         * JavaScriptCore.xcodeproj/project.pbxproj:
3128
3129 2010-03-11  Simon Fraser  <simon.fraser@apple.com>
3130
3131         Reviewed by Mark Rowe.
3132
3133         Sort the project file .
3134
3135         * JavaScriptCore.xcodeproj/project.pbxproj:
3136
3137 2010-03-11  Gabor Loki  <loki@webkit.org>
3138
3139         Reviewed by Gavin Barraclough.
3140
3141         Buildfix for Thumb-2 after r55684. Add branch8 and branchTest8 functions.
3142         https://bugs.webkit.org/show_bug.cgi?id=35892
3143
3144         * assembler/ARMv7Assembler.h:
3145         (JSC::ARMv7Assembler::):
3146         (JSC::ARMv7Assembler::ldrb):
3147         * assembler/MacroAssemblerARMv7.h:
3148         (JSC::MacroAssemblerARMv7::load8):
3149         (JSC::MacroAssemblerARMv7::branch8):
3150         (JSC::MacroAssemblerARMv7::branchTest8):
3151         (JSC::MacroAssemblerARMv7::setTest8):
3152
3153 2010-03-10  Gavin Barraclough  <barraclough@apple.com>
3154
3155         Rubber stamped by Oliver Hunt.
3156         
3157         Rename JSC::UStringImpl::data() to characters(), to match WebCore::StringImpl.
3158
3159         * API/JSClassRef.cpp:
3160         (OpaqueJSClassContextData::OpaqueJSClassContextData):
3161         * bytecompiler/BytecodeGenerator.cpp:
3162         (JSC::keyForCharacterSwitch):
3163         * bytecompiler/NodesCodegen.cpp:
3164         (JSC::processClauseList):
3165         * interpreter/Interpreter.cpp:
3166         (JSC::Interpreter::privateExecute):
3167         * jit/JITStubs.cpp:
3168         (JSC::DEFINE_STUB_FUNCTION):
3169         * runtime/ArrayPrototype.cpp:
3170         (JSC::arrayProtoFuncToString):
3171         * runtime/Identifier.cpp:
3172         (JSC::Identifier::equal):
3173         (JSC::Identifier::addSlowCase):
3174         * runtime/JSString.cpp:
3175         (JSC::JSString::resolveRope):
3176         * runtime/UString.cpp:
3177         (JSC::UString::toStrictUInt32):
3178         (JSC::equal):
3179         * runtime/UString.h:
3180         (JSC::UString::data):
3181         * runtime/UStringImpl.h:
3182         (JSC::UStringImpl::characters):
3183         (JSC::UStringImpl::hash):
3184         (JSC::UStringImpl::setHash):
3185
3186 2010-03-10  Gavin Barraclough  <barraclough@apple.com>
3187
3188         Reviewed by Darin Adler, Geoffrey Garen, Maciej Stachowiak.
3189
3190         https://bugs.webkit.org/show_bug.cgi?id=35991
3191         Would be faster to not use a thread specific to implement StringImpl::empty()
3192
3193         Change JSC::UStringImpl's implementation of empty() match to match StringImpl's new implementation
3194         (use a static defined within the empty() method), and change the interface to match too (return
3195         a pointer not a reference). 
3196
3197         ~0% performance impact (possible minor progression from moving empty() from .h to .cpp).
3198
3199         * JavaScriptCore.exp:
3200         * runtime/Identifier.cpp:
3201         (JSC::Identifier::add):
3202         (JSC::Identifier::addSlowCase):
3203         * runtime/PropertyNameArray.cpp:
3204         (JSC::PropertyNameArray::add):
3205         * runtime/UString.cpp:
3206         (JSC::initializeUString):
3207         (JSC::UString::UString):
3208         * runtime/UStringImpl.cpp:
3209         (JSC::UStringImpl::empty):
3210         (JSC::UStringImpl::create):
3211         * runtime/UStringImpl.h:
3212         (JSC::UStringImpl::adopt):
3213         (JSC::UStringImpl::createUninitialized):
3214         (JSC::UStringImpl::tryCreateUninitialized):
3215
3216 2010-03-10  Dmitry Titov  <dimich@chromium.org>
3217
3218         Not reviewed, fixing Snow Leopard build.
3219
3220         * wtf/mac/MainThreadMac.mm: Forgot 'static' for a new local function.
3221         (WTF::postTimer):
3222
3223 2010-03-10  Dmitry Titov  <dimich@chromium.org>
3224
3225         Reviewed by Darin Adler.
3226
3227         Make Document::postTask to use a single queue of tasks, to fire them in order
3228         https://bugs.webkit.org/show_bug.cgi?id=35943
3229
3230         The patch uses CFRunLoopTimer to schedule execution of tasks instead of performSelectorOnMainThread which apparently can starve other event sources.
3231         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
3232         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.
3233
3234         * wtf/mac/MainThreadMac.mm:
3235         (WTF::timerFired):
3236         (WTF::postTimer):
3237         (WTF::scheduleDispatchFunctionsOnMainThread): Use timer posted to the current RunLoop if scheduling the task execution while on the main thread.
3238
3239 2010-03-10  Geoffrey Garen  <ggaren@apple.com>
3240
3241         Windows build fix: added new symbol.
3242
3243         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3244
3245 2010-03-10  Geoffrey Garen  <ggaren@apple.com>
3246
3247         Windows build fix: removed old symbol.
3248
3249         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3250
3251 2010-03-09  Geoffrey Garen  <ggaren@apple.com>
3252
3253         Reviewed by Alexey Proskuryakov, Darin Adler, and Sam Weinig.
3254
3255         Refactored fastCheckConsistency to match some review comments:
3256             - renamed fastCheckConsistency to fastMallocSize, and changed ValueCheck
3257               to ASSERT that a pointer's fastMallocSize is not 0.
3258             - implemented a version of fastMallocSize for tcmalloc.
3259             
3260         Also moved some pre-existing code around to avoid a problem related to
3261         mismatched #define/#undef of malloc/free in this source file.
3262
3263         * JavaScriptCore.exp:
3264         * wtf/FastMalloc.cpp:
3265         (WTF::fastMallocSize): Renamed. Fixed indentation.
3266
3267         (WTF::TCMalloc_PageHeap::scavenge): Removed an incorrect ASSERT that
3268         got in the way of testing the tcmalloc implementation. (More information
3269         on why this ASSERT is incorrect is in <rdar://problem/7165917>.)
3270
3271         (WTF::TCMallocStats::fastMallocSize): Implemented for tcmalloc.
3272
3273         * wtf/FastMalloc.h: Updated for rename.
3274
3275         * wtf/ValueCheck.h:
3276         (WTF::): Moved the ASSERT that used to be in fastCheckConsistency here.
3277
3278 2010-03-10  Kevin Ollivier  <kevino@theolliviers.com>
3279
3280         Reviewed by Eric Seidel.
3281
3282         Make global new/delete operators configurable for all ports and disable it
3283         for the wx port for now.
3284
3285         * wtf/FastMalloc.h:
3286         * wtf/Platform.h:
3287
3288 2010-03-09  Gavin Barraclough  <barraclough@apple.com>
3289
3290         Reviewed by NOBODY (reverting r54510).
3291
3292         This caused a performance regression, by breaking the code
3293         generator's logic to calculate the skip level for resolving
3294         variables (traced by rdar:7683350)  Reverting for now.
3295
3296         * parser/Grammar.y:
3297         * parser/NodeConstructors.h:
3298         (JSC::ContinueNode::ContinueNode):
3299         (JSC::BreakNode::BreakNode):
3300         (JSC::ForInNode::ForInNode):
3301         * runtime/CommonIdentifiers.cpp:
3302         (JSC::CommonIdentifiers::CommonIdentifiers):
3303         * runtime/CommonIdentifiers.h:
3304         * runtime/FunctionPrototype.cpp:
3305         (JSC::FunctionPrototype::FunctionPrototype):
3306         * runtime/Identifier.cpp:
3307         (JSC::Identifier::add):
3308         * runtime/PropertyNameArray.cpp:
3309         (JSC::PropertyNameArray::add):
3310
3311 2010-03-09  Geoffrey Garen  <ggaren@apple.com>
3312
3313         Reviewed by Darin Adler.
3314
3315         Changed FastMalloc statistics reporting to be a bit clearer. We now
3316         report:
3317             - Reserved VM Bytes: the VM that has been mapped into the process.
3318             - Committed VM Bytes: the subset of Reserved VM Bytes actually in use.
3319             - Free List Bytes: the subset of Committed VM Bytes in a free list.
3320
3321         * wtf/FastMalloc.cpp:
3322         (WTF::fastMallocStatistics):
3323         (WTF::TCMallocStats::fastMallocStatistics): Updated to report the statistics
3324         above. Standardized use of "ifdef WTF_CHANGES". Added a SpinLockHolder
3325         around all statistics gathering, since it reads from the page heap.
3326
3327         * wtf/FastMalloc.h: Updated to report the statistics above. 
3328
3329 2010-03-09  Gabor Loki  <loki@webkit.org>
3330
3331         Rubber-stamped by Maciej Stachowiak.
3332
3333         Buildfix for ARM after r55684. Add branch8 and branchTest8 functions.
3334         https://bugs.webkit.org/show_bug.cgi?id=35892
3335
3336         * assembler/ARMAssembler.cpp:
3337         (JSC::ARMAssembler::dataTransfer32):
3338         * assembler/ARMAssembler.h:
3339         (JSC::ARMAssembler::):
3340         * assembler/MacroAssemblerARM.h:
3341         (JSC::MacroAssemblerARM::load8):
3342         (JSC::MacroAssemblerARM::branch8):
3343         (JSC::MacroAssemblerARM::branchTest8):
3344
3345 2010-03-08  Geoffrey Garen  <ggaren@apple.com>
3346
3347         Windows build fix: 'P' is not a type. Luckily, 'void' is.
3348
3349         * wtf/FastMalloc.cpp:
3350         (WTF::fastCheckConsistency):
3351
3352 2010-03-08  Geoffrey Garen  <ggaren@apple.com>
3353
3354         Windows build fix: export a new symbol.
3355
3356         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3357
3358 2010-03-08  Geoffrey Garen  <ggaren@apple.com>
3359
3360         Reviewed by Maciej Stachowiak.
3361
3362         Switching malloc implementations requires a world rebuild
3363         https://bugs.webkit.org/show_bug.cgi?id=35899
3364
3365         * wtf/FastMalloc.cpp:
3366         (WTF::fastCheckConsistency):
3367         (WTF::TCMallocStats::fastCheckConsistency):
3368         * wtf/FastMalloc.h:
3369         * wtf/ValueCheck.h:
3370         (WTF::): Moved pointer checking into a helper function in FastMalloc.cpp,
3371         so you can switch malloc implementations without rebuilding the world.
3372
3373 2010-03-07  Oliver Hunt  <oliver@apple.com>
3374
3375         Reviewed by Darin Adler.
3376
3377         TypeInfo is unnecessarily large
3378         https://bugs.webkit.org/show_bug.cgi?id=35850
3379
3380         Reduce the size of the type and flags members to a single
3381         byte each, reducing the size of Structure by 8 bytes.
3382
3383         * assembler/MacroAssemblerX86Common.h:
3384         (JSC::MacroAssemblerX86Common::branch8):
3385         (JSC::MacroAssemblerX86Common::branchTest8):
3386         (JSC::MacroAssemblerX86Common::setTest8):
3387           Add single byte branches, and correct setTest8 to do a
3388           single byte read from memory, and actually store the result
3389         * assembler/X86Assembler.h:
3390         (JSC::X86Assembler::):
3391         (JSC::X86Assembler::cmpb_im):
3392         (JSC::X86Assembler::testb_im):
3393         * jit/JITCall.cpp:
3394         (JSC::JIT::emit_op_construct_verify):
3395         * jit/JITOpcodes.cpp:
3396         (JSC::JIT::emit_op_instanceof):
3397         (JSC::JIT::emit_op_jeq_null):
3398         (JSC::JIT::emit_op_jneq_null):
3399         (JSC::JIT::emit_op_get_pnames):
3400         (JSC::JIT::emit_op_convert_this):
3401         (JSC::JIT::emit_op_construct_verify):
3402         (JSC::JIT::emit_op_to_jsnumber):
3403         (JSC::JIT::emit_op_eq_null):
3404         (JSC::JIT::emit_op_neq_null):
3405         * runtime/JSTypeInfo.h:
3406         (JSC::TypeInfo::TypeInfo):
3407         (JSC::TypeInfo::type):
3408
3409 2010-03-08  Gavin Barraclough  <barraclough@apple.com>
3410
3411         Reviewed by NOBODY (reverting regression).
3412
3413         Reverting 55035, this caused a regression.
3414         (https://bugs.webkit.org/show_bug.cgi?id=35843)
3415
3416         * runtime/JSString.cpp:
3417         (JSC::JSString::resolveRope):
3418         (JSC::JSString::getStringPropertyDescriptor):
3419         * runtime/JSString.h:
3420         (JSC::jsSingleCharacterSubstring):
3421         (JSC::JSString::getIndex):
3422         (JSC::JSString::getStringPropertySlot):
3423         * runtime/UStringImpl.cpp:
3424         * runtime/UStringImpl.h:
3425
3426 2010-03-08  Stuart Morgan  <stuartmorgan@chromium.org>
3427
3428         Reviewed by Darin Adler.
3429
3430         Added a new USE definition for secure text mode on the Mac.
3431         https://bugs.webkit.org/show_bug.cgi?id=31265
3432
3433         * wtf/Platform.h:
3434
3435 2010-03-08  Jian Li  <jianli@chromium.org>
3436
3437         Reviewed by Dmitry Titov.
3438
3439         Blob.slice support.
3440         https://bugs.webkit.org/show_bug.cgi?id=32993
3441
3442         Add ENABLE_BLOB_SLICE feature define.
3443         Also fix a problem that JSValue.toInteger is not exposed on Windows.
3444
3445         * Configurations/FeatureDefines.xcconfig:
3446         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3447
3448 2010-03-07  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
3449
3450         Reviewed by Simon Hausmann.
3451
3452         Small performance fix in the QScriptConverter::toString().
3453
3454         The QByteArray was replaced by the QVarLengthArray which doesn't
3455         have to allocate any memory on heap.
3456
3457         [Qt] QScriptConverter::toString() should use QVarLengthArray instead of QByteArray
3458         https://bugs.webkit.org/show_bug.cgi?id=35577
3459
3460         * qt/api/qscriptconverter_p.h:
3461         (QScriptConverter::toString):
3462
3463 2010-03-06  Mark Rowe  <mrowe@apple.com>
3464
3465         Rubber-stamped by Sam Weinig.
3466
3467         Remove unnecessary includes of wtf/Platform.h.  This is already pulled in by config.h.
3468
3469         * API/APICast.h:
3470         * API/JSCallbackFunction.cpp:
3471         * API/JSContextRef.cpp:
3472         * API/JSObjectRef.cpp:
3473         * API/JSValueRef.cpp:
3474         * assembler/ARMAssembler.h:
3475         * assembler/ARMv7Assembler.h:
3476         * assembler/AbstractMacroAssembler.h:
3477         * assembler/AssemblerBuffer.h:
3478         * assembler/AssemblerBufferWithConstantPool.h:
3479         * assembler/CodeLocation.h:
3480         * assembler/LinkBuffer.h:
3481         * assembler/MIPSAssembler.h:
3482         * assembler/MacroAssembler.h:
3483         * assembler/MacroAssemblerARM.h:
3484         * assembler/MacroAssemblerARMv7.h:
3485         * assembler/MacroAssemblerCodeRef.h:
3486         * assembler/MacroAssemblerMIPS.h:
3487         * assembler/MacroAssemblerX86.h:
3488         * assembler/MacroAssemblerX86Common.h:
3489         * assembler/MacroAssemblerX86_64.h:
3490         * assembler/RepatchBuffer.h:
3491         * assembler/X86Assembler.h:
3492         * jit/JIT.h:
3493         * jit/JITCode.h:
3494         * jit/JITInlineMethods.h:
3495         * jit/JITStubs.h:
3496         * os-win32/stdint.h:
3497         * runtime/JSAPIValueWrapper.h:
3498         * runtime/JSImmediate.h:
3499         * wtf/ASCIICType.h:
3500         * wtf/StdLibExtras.h:
3501         * wtf/VMTags.h:
3502         * yarr/RegexCompiler.h:
3503         * yarr/RegexInterpreter.h:
3504         * yarr/RegexJIT.h:
3505         * yarr/RegexParser.h:
3506         * yarr/RegexPattern.h:
3507
3508 2010-03-06  Kwang Yul Seo  <skyul@company100.net>
3509
3510         Reviewed by Eric Seidel.
3511
3512         [BREWMP] Share OwnPtr.
3513         https://bugs.webkit.org/show_bug.cgi?id=35776
3514
3515         Share OwnPtr implementation with BREW MP and remove OwnPtrBrew.
3516
3517         * wtf/OwnPtrBrew.cpp: Added.
3518         (WTF::deleteOwnedPtr):
3519         * wtf/OwnPtrCommon.h:
3520         * wtf/brew/OwnPtrBrew.cpp: Removed.
3521         * wtf/brew/OwnPtrBrew.h: Removed.
3522
3523 2010-03-06  Patrick Gansterer  <paroga@paroga.com>
3524
3525         Reviewed by Eric Seidel.
3526
3527         Implemented JIT_OPTIMIZE_NATIVE_CALL for WinCE
3528         https://bugs.webkit.org/show_bug.cgi?id=33426
3529
3530         * jit/JITOpcodes.cpp:
3531         (JSC::JIT::privateCompileCTIMachineTrampolines):
3532
3533 2010-03-05  Oliver Hunt  <oliver@apple.com>
3534
3535         Reviewed by NOBODY (build fix).
3536
3537         Add enw exports to windows
3538
3539         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3540
3541 2010-03-05  Oliver Hunt  <oliver@apple.com>
3542
3543         Reviewed by Gavin Barraclough.
3544
3545         JSC should cache int to Identifier conversion as it does for ordinary strings
3546         https://bugs.webkit.org/show_bug.cgi?id=35814
3547
3548         Make the NumericStrings cache cache unsigned ints in addition to signed.
3549         We keep them separate from the int cache as it both simplifies code, and
3550         also because the unsigned path is exclusive to property access and therefore
3551         seems to have different usage patterns.
3552
3553         The primary trigger for the unsigned to Identifier propertyName conversion
3554         is the construction of array-like objects out of normal objects.  Given these
3555         tend to be relative small numbers, and the array-like behaviour lends itself
3556         to sequential values this patch also adds a non-colliding cache for all small
3557         numbers.
3558
3559         * JavaScriptCore.exp:
3560         * runtime/Identifier.cpp:
3561         (JSC::Identifier::from):
3562         * runtime/Identifier.h:
3563         * runtime/NumericStrings.h:
3564         (JSC::NumericStrings::add):
3565         (JSC::NumericStrings::lookup):
3566         (JSC::NumericStrings::lookupSmallString):
3567
3568 2010-03-03  Oliver Hunt  <oliver@apple.com>
3569
3570         Reviewed by Gavin Barraclough.
3571
3572         Allow static property getters to interact with JSCs caching
3573         https://bugs.webkit.org/show_bug.cgi?id=35716
3574
3575         Add new opcodes for handling cached lookup of static value getters.
3576         More or less the same as with JS getters, all that changes is that
3577         instead of calling through a JSFunction we always know that we have
3578         a C function to call.
3579
3580         For the patching routines in the JIT we now need to pass a few
3581         new parameters to allow us to pass enough information to the stub
3582         function to allow us to call the C function correctly.  Logically
3583         this shouldn't actually be necessary as all of these functions ignore
3584         the identifier, but removing the ident parameter would require
3585         somewhat involved changes to the way we implement getOwnPropertySlot,
3586         etc.
3587
3588         * bytecode/CodeBlock.cpp:
3589         (JSC::CodeBlock::dump):
3590         (JSC::CodeBlock::derefStructures):
3591         (JSC::CodeBlock::refStructures):
3592         * bytecode/Instruction.h:
3593         (JSC::Instruction::Instruction):