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