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