Try to fix the windows build: don't export this inlined function.
[WebKit-https.git] / JavaScriptCore / ChangeLog
1 2009-12-15  Geoffrey Garen  <ggaren@apple.com>
2
3         Try to fix the windows build: don't export this inlined function.
4
5         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
6
7 2009-12-15  Geoffrey Garen  <ggaren@apple.com>
8
9         Reviewed by Beth Dakin.
10
11         Inlined JSCell's operator new.
12         
13         3.7% speedup on bench-allocate-nonretained.js.
14
15         * JavaScriptCore.exp:
16         * runtime/JSCell.cpp:
17         * runtime/JSCell.h:
18         (JSC::JSCell::operator new):
19
20 2009-12-15  Geoffrey Garen  <ggaren@apple.com>
21
22         Reviewed by Oliver Hunt.
23
24         Removed the number heap, replacing it with a one-item free list for
25         numbers, taking advantage of the fact that two number cells fit inside
26         the space for one regular cell, and number cells don't require destruction.
27         
28         SunSpider says 1.6% faster in JSVALUE32 mode (the only mode that
29         heap-allocates numbers).
30         
31         SunSpider says 1.1% faster in JSVALUE32_64 mode. v8 says 0.8% faster
32         in JSVALUE32_64 mode. 10% speedup on bench-alloc-nonretained.js. 6%
33         speedup on bench-alloc-retained.js.
34         
35         There's a lot of formulaic change in this patch, but not much substance.
36
37         * JavaScriptCore.exp:
38         * debugger/Debugger.cpp:
39         (JSC::Debugger::recompileAllJSFunctions):
40         * runtime/Collector.cpp:
41         (JSC::Heap::Heap):
42         (JSC::Heap::destroy):
43         (JSC::Heap::allocateBlock):
44         (JSC::Heap::freeBlock):
45         (JSC::Heap::freeBlockPtr):
46         (JSC::Heap::freeBlocks):
47         (JSC::Heap::recordExtraCost):
48         (JSC::Heap::allocate):
49         (JSC::Heap::resizeBlocks):
50         (JSC::Heap::growBlocks):
51         (JSC::Heap::shrinkBlocks):
52         (JSC::Heap::markConservatively):
53         (JSC::Heap::clearMarkBits):
54         (JSC::Heap::markedCells):
55         (JSC::Heap::sweep):
56         (JSC::Heap::markRoots):
57         (JSC::Heap::objectCount):
58         (JSC::Heap::addToStatistics):
59         (JSC::Heap::statistics):
60         (JSC::Heap::isBusy):
61         (JSC::Heap::reset):
62         (JSC::Heap::collectAllGarbage):
63         (JSC::Heap::primaryHeapBegin):
64         (JSC::Heap::primaryHeapEnd):
65         * runtime/Collector.h:
66         (JSC::): Removed all code pertaining to the number heap, and changed all
67         heap template functions and classes to non-template functions and classes.
68
69         (JSC::Heap::allocateNumber): A new optimization to replace the number
70         heap: allocate half-sized number cells in pairs, returning the first
71         cell and caching the second cell for the next allocation.
72
73         * runtime/CollectorHeapIterator.h:
74         (JSC::LiveObjectIterator::LiveObjectIterator):
75         (JSC::LiveObjectIterator::operator++):
76         (JSC::DeadObjectIterator::DeadObjectIterator):
77         (JSC::DeadObjectIterator::operator++):
78         (JSC::ObjectIterator::ObjectIterator):
79         (JSC::ObjectIterator::operator++):
80         * runtime/JSCell.h:
81         (JSC::JSCell::isNumber): Removed all code pertaining to the number heap,
82         and changed all heap template functions and classes to non-template functions
83         and classes.
84
85 2009-12-15  Zoltan Horvath  <zoltan@webkit.org>
86
87         Reviewed by Darin Adler.
88
89         Allow custom memory allocation control for WeakGCMap class
90         https://bugs.webkit.org/show_bug.cgi?id=32547
91
92         Inherits WeakGCMap from FastAllocBase because it is instantiated by
93         'new' at: WebCore/dom/Document.cpp:512.
94
95         * runtime/WeakGCMap.h:
96
97 2009-12-15  Zoltan Horvath  <zoltan@webkit.org>
98
99         Reviewed by Darin Adler.
100
101         Allow custom memory allocation control for dtoa's P5Node struct
102         https://bugs.webkit.org/show_bug.cgi?id=32544
103
104         Inherits P5Node struct from Noncopyable because it is instantiated by
105         'new' at wtf/dtoa.cpp:588 and don't need to be copyable.
106
107         * wtf/dtoa.cpp:
108
109 2009-12-14  Geoffrey Garen  <ggaren@apple.com>
110
111         Reviewed by Simon Fraser.
112
113         https://bugs.webkit.org/show_bug.cgi?id=32524
114         REGRESSION(52084): fast/dom/prototypes.html failing two CSS tests
115
116         * wtf/StdLibExtras.h:
117         (WTF::bitCount): The original patch put the parentheses in the wrong
118         place, completely changing the calculation and making it almost always
119         wrong. Moved the parentheses around the '+' operation, like the original
120         compiler warning suggested.
121
122 2009-12-14  Gabor Loki  <loki@inf.u-szeged.hu>
123
124         Unreviewed trivial buildfix.
125
126         Fix crosses initialization of usedPrimaryBlocks for JSValue32
127
128         * runtime/Collector.cpp:
129         (JSC::Heap::markConservatively):
130
131 2009-12-14  Csaba Osztrogonác  <ossy@webkit.org>
132
133         Reviewed by Simon Hausmann.
134
135         GCC 4.3.x warning fixed. Suggested parantheses added.
136         warning: ../../../JavaScriptCore/wtf/StdLibExtras.h:77: warning: suggest parentheses around + or - in operand of &
137
138         * wtf/StdLibExtras.h:
139         (WTF::bitCount):
140
141 2009-12-13  Geoffrey Garen  <ggaren@apple.com>
142
143         Reviewed by Sam Weinig.
144         
145         Changed GC from mark-sweep to mark-allocate.
146         
147         Added WeakGCMap to keep WebCore blissfully ignorant about objects that
148         have become garbage but haven't run their destructors yet.
149         
150         1% SunSpider speedup.
151         7.6% v8 speedup (37% splay speedup).
152         17% speedup on bench-alloc-nonretained.js.
153         18% speedup on bench-alloc-retained.js.
154
155         * API/JSBase.cpp:
156         (JSGarbageCollect):
157         * API/JSContextRef.cpp:
158         * JavaScriptCore.exp:
159         * JavaScriptCore.xcodeproj/project.pbxproj: Updated for renames and new
160         files.
161
162         * debugger/Debugger.cpp:
163         (JSC::Debugger::recompileAllJSFunctions): Updated to use the Collector
164         iterator abstraction.
165
166         * jsc.cpp:
167         (functionGC): Updated for rename.
168
169         * runtime/Collector.cpp: Slightly reduced the number of allocations per
170         collection, so that small workloads only allocate on collector block,
171         rather than two.
172
173         (JSC::Heap::Heap): Updated to use the new allocateBlock function.
174
175         (JSC::Heap::destroy): Updated to use the new freeBlocks function.
176
177         (JSC::Heap::allocateBlock): New function to initialize a block when
178         allocating it.
179
180         (JSC::Heap::freeBlock): Consolidated the responsibility for running
181         destructors into this function.
182
183         (JSC::Heap::freeBlocks): Updated to use freeBlock.
184
185         (JSC::Heap::recordExtraCost): Sweep the heap in this reporting function,
186         so that allocation, which is more common, doesn't have to check extraCost.
187
188         (JSC::Heap::heapAllocate): Run destructors right before recycling a
189         garbage cell. This has better cache utilization than a separate sweep phase.
190
191         (JSC::Heap::resizeBlocks):
192         (JSC::Heap::growBlocks):
193         (JSC::Heap::shrinkBlocks): New set of functions for managing the size of
194         the heap, now that the heap doesn't maintain any information about its
195         size.
196
197         (JSC::isPointerAligned):
198         (JSC::isHalfCellAligned):
199         (JSC::isPossibleCell):
200         (JSC::isCellAligned):
201         (JSC::Heap::markConservatively): Cleaned up this code a bit.
202
203         (JSC::Heap::clearMarkBits):
204         (JSC::Heap::markedCells): Some helper functions for examining the the mark
205         bitmap.
206
207         (JSC::Heap::sweep): Simplified this function by using a DeadObjectIterator.
208
209         (JSC::Heap::markRoots): Reordered some operations for clarity.
210
211         (JSC::Heap::objectCount):
212         (JSC::Heap::addToStatistics):
213         (JSC::Heap::statistics): Rewrote these functions to calculate an object
214         count on demand, since the heap doesn't maintain this information by 
215         itself.
216
217         (JSC::Heap::reset): New function for resetting the heap once we've
218         exhausted heap space.
219
220         (JSC::Heap::collectAllGarbage): This function matches the old collect()
221         behavior, but it's now an uncommon function used only by API.
222
223         * runtime/Collector.h:
224         (JSC::CollectorBitmap::count):
225         (JSC::CollectorBitmap::isEmpty): Added some helper functions for managing
226         the collector mark bitmap.
227
228         (JSC::Heap::reportExtraMemoryCost): Changed reporting from cell equivalents
229         to bytes, so it's easier to understand.
230         
231         * runtime/CollectorHeapIterator.h:
232         (JSC::CollectorHeapIterator::CollectorHeapIterator):
233         (JSC::CollectorHeapIterator::operator!=):
234         (JSC::CollectorHeapIterator::operator*):
235         (JSC::CollectorHeapIterator::advance):
236         (JSC::::LiveObjectIterator):
237         (JSC::::operator):
238         (JSC::::DeadObjectIterator):
239         (JSC::::ObjectIterator): New iterators for encapsulating details about
240         heap layout, and what's live and dead on the heap.
241
242         * runtime/JSArray.cpp:
243         (JSC::JSArray::putSlowCase):
244         (JSC::JSArray::increaseVectorLength): Delay reporting extra cost until
245         we're fully constructed, so the heap mark phase won't visit us in an
246         invalid state.
247
248         * runtime/JSCell.h:
249         (JSC::JSCell::):
250         (JSC::JSCell::createDummyStructure):
251         (JSC::JSCell::JSCell):
252         * runtime/JSGlobalData.cpp:
253         (JSC::JSGlobalData::JSGlobalData):
254         * runtime/JSGlobalData.h: Added a dummy cell to simplify allocation logic.
255
256         * runtime/JSString.h:
257         (JSC::jsSubstring): Don't report extra cost for substrings, since they
258         share a buffer that's already reported extra cost.
259
260         * runtime/Tracing.d:
261         * runtime/Tracing.h: Changed these dtrace hooks not to report object
262         counts, since they're no longer cheap to compute.
263
264         * runtime/UString.h: Updated for renames.
265
266         * runtime/WeakGCMap.h: Added.
267         (JSC::WeakGCMap::isEmpty):
268         (JSC::WeakGCMap::uncheckedGet):
269         (JSC::WeakGCMap::uncheckedBegin):
270         (JSC::WeakGCMap::uncheckedEnd):
271         (JSC::::get):
272         (JSC::::take):
273         (JSC::::set):
274         (JSC::::uncheckedRemove): Mentioned above.
275
276         * wtf/StdLibExtras.h:
277         (WTF::bitCount): Added a bit population count function, so the heap can
278         count live objects to fulfill statistics questions.
279
280 The very last cell in the block is not allocated -- should not be marked.
281
282 2009-12-13  Geoffrey Garen  <ggaren@apple.com>
283
284         Windows build fix: Export some new symbols.
285
286         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
287
288 2009-12-13  Geoffrey Garen  <ggaren@apple.com>
289
290         Windows build fix: Removed some old exports.
291
292         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
293
294 2009-12-13  Geoffrey Garen  <ggaren@apple.com>
295
296         Windows build fix: Use unsigned instead of uint32_t to avoid dependencies.
297
298         * wtf/StdLibExtras.h:
299         (WTF::bitCount):
300
301 2009-12-13  Gavin Barraclough  <barraclough@apple.com>
302
303         Reviewed by NOBODY (speculative Windows build fix).
304
305         * runtime/JSGlobalObjectFunctions.cpp:
306
307 2009-12-13  Gavin Barraclough  <barraclough@apple.com>
308
309         Reviewed by Sam Weinig.
310
311         https://bugs.webkit.org/show_bug.cgi?id=32496
312         Switch remaining cases of string construction to use StringBuilder.
313         Builds strings using a vector rather than using string append / addition.
314
315         * JavaScriptCore.exp:
316         * JavaScriptCore.xcodeproj/project.pbxproj:
317         * runtime/Executable.cpp:
318         (JSC::FunctionExecutable::paramString):
319         * runtime/FunctionConstructor.cpp:
320         (JSC::constructFunction):
321         * runtime/JSGlobalObjectFunctions.cpp:
322         (JSC::encode):
323         (JSC::decode):
324         (JSC::globalFuncEscape):
325         (JSC::globalFuncUnescape):
326         * runtime/JSONObject.cpp:
327         (JSC::Stringifier::stringify):
328         (JSC::Stringifier::indent):
329         * runtime/JSString.h:
330         * runtime/LiteralParser.cpp:
331         (JSC::LiteralParser::Lexer::lexString):
332         * runtime/NumberPrototype.cpp:
333         (JSC::integerPartNoExp):
334         (JSC::numberProtoFuncToFixed):
335         (JSC::numberProtoFuncToPrecision):
336         * runtime/Operations.h:
337         (JSC::jsString):
338         * runtime/StringPrototype.cpp:
339         (JSC::substituteBackreferencesSlow):
340         (JSC::substituteBackreferences):
341         (JSC::stringProtoFuncConcat):
342
343 2009-12-08  Jeremy Moskovich  <jeremy@chromium.org>
344
345         Reviewed by Eric Seidel.
346
347         Add code to allow toggling ATSUI/Core Text rendering at runtime in ComplexTextController.
348         https://bugs.webkit.org/show_bug.cgi?id=31802
349
350         The goal here is to allow for a zero runtime hit for ports that decide to select
351         the API at compile time.
352         When both USE(ATSUI) and USE(CORE_TEXT) are true, the API is toggled
353         at runtime.  Core Text is used for OS Versions >= 10.6.
354
355         * wtf/Platform.h: #define USE_CORE_TEXT and USE_ATSUI on Chrome/Mac.
356
357 2009-12-11  Maciej Stachowiak  <mjs@apple.com>
358
359         Reviewed by Oliver Hunt.
360
361         Unify codegen for forward and backward variants of branches
362         https://bugs.webkit.org/show_bug.cgi?id=32463
363
364         * jit/JIT.h:
365         (JSC::JIT::emit_op_loop): Implemented in terms of forward variant.
366         (JSC::JIT::emit_op_loop_if_true): ditto
367         (JSC::JIT::emitSlow_op_loop_if_true): ditto
368         (JSC::JIT::emit_op_loop_if_false): ditto
369         (JSC::JIT::emitSlow_op_loop_if_false): ditto
370         (JSC::JIT::emit_op_loop_if_less): ditto
371         (JSC::JIT::emitSlow_op_loop_if_less): ditto
372         * jit/JITOpcodes.cpp:
373
374 2009-12-11  Sam Weinig  <sam@webkit.org>
375
376         Reviewed by Anders Carlsson.
377
378         Allow WTFs concept of the main thread to differ from pthreads when necessary.
379
380         * wtf/ThreadingPthreads.cpp:
381         (WTF::initializeThreading):
382         (WTF::isMainThread):
383         * wtf/mac/MainThreadMac.mm:
384         (WTF::initializeMainThreadPlatform):
385         (WTF::scheduleDispatchFunctionsOnMainThread):
386
387 2009-12-11  Gavin Barraclough  <barraclough@apple.com>
388
389         Reviewed by Oliver Hunt.
390
391         https://bugs.webkit.org/show_bug.cgi?id=32454
392         Refactor construction of simple strings to avoid string concatenation.
393
394         Building strings through concatenation has a memory and performance cost -
395         a memory cost since we must over-allocate the buffer to leave space to append
396         into, and performance in that the string may still require reallocation (and
397         thus copying during construction).  Instead move the full construction to
398         within a single function call (makeString), so that the arguments' lengths
399         can be calculated and an appropriate sized buffer allocated before copying
400         any characters.
401
402         ~No performance change (~2% progression on date tests).
403
404         * bytecode/CodeBlock.cpp:
405         (JSC::escapeQuotes):
406         (JSC::valueToSourceString):
407         (JSC::constantName):
408         (JSC::idName):
409         (JSC::CodeBlock::registerName):
410         (JSC::regexpToSourceString):
411         (JSC::regexpName):
412         * bytecompiler/NodesCodegen.cpp:
413         (JSC::substitute):
414         * profiler/Profiler.cpp:
415         (JSC::Profiler::createCallIdentifier):
416         * runtime/DateConstructor.cpp:
417         (JSC::callDate):
418         * runtime/DateConversion.cpp:
419         (JSC::formatDate):
420         (JSC::formatDateUTCVariant):
421         (JSC::formatTime):
422         (JSC::formatTimeUTC):
423         * runtime/DateConversion.h:
424         (JSC::):
425         * runtime/DatePrototype.cpp:
426         (JSC::dateProtoFuncToString):
427         (JSC::dateProtoFuncToUTCString):
428         (JSC::dateProtoFuncToDateString):
429         (JSC::dateProtoFuncToTimeString):
430         (JSC::dateProtoFuncToGMTString):
431         * runtime/ErrorPrototype.cpp:
432         (JSC::errorProtoFuncToString):
433         * runtime/ExceptionHelpers.cpp:
434         (JSC::createUndefinedVariableError):
435         (JSC::createErrorMessage):
436         (JSC::createInvalidParamError):
437         * runtime/FunctionPrototype.cpp:
438         (JSC::insertSemicolonIfNeeded):
439         (JSC::functionProtoFuncToString):
440         * runtime/ObjectPrototype.cpp:
441         (JSC::objectProtoFuncToString):
442         * runtime/RegExpConstructor.cpp:
443         (JSC::constructRegExp):
444         * runtime/RegExpObject.cpp:
445         (JSC::RegExpObject::match):
446         * runtime/RegExpPrototype.cpp:
447         (JSC::regExpProtoFuncCompile):
448         (JSC::regExpProtoFuncToString):
449         * runtime/StringPrototype.cpp:
450         (JSC::stringProtoFuncBig):
451         (JSC::stringProtoFuncSmall):
452         (JSC::stringProtoFuncBlink):
453         (JSC::stringProtoFuncBold):
454         (JSC::stringProtoFuncFixed):
455         (JSC::stringProtoFuncItalics):
456         (JSC::stringProtoFuncStrike):
457         (JSC::stringProtoFuncSub):
458         (JSC::stringProtoFuncSup):
459         (JSC::stringProtoFuncFontcolor):
460         (JSC::stringProtoFuncFontsize):
461         (JSC::stringProtoFuncAnchor):
462         * runtime/UString.h:
463         (JSC::):
464         (JSC::makeString):
465
466 2009-12-10  Gavin Barraclough  <barraclough@apple.com>
467
468         Reviewed by Oliver Hunt.
469
470         https://bugs.webkit.org/show_bug.cgi?id=32400
471         Switch remaining cases of string addition to use ropes.
472
473         Re-landing r51975 - added toPrimitiveString method,
474         performs toPrimitive then subsequent toString operations.
475
476         ~1% progression on Sunspidey.
477
478         * jit/JITStubs.cpp:
479         (JSC::DEFINE_STUB_FUNCTION):
480         * runtime/JSString.h:
481         (JSC::JSString::JSString):
482         (JSC::JSString::appendStringInConstruct):
483         * runtime/Operations.cpp:
484         (JSC::jsAddSlowCase):
485         * runtime/Operations.h:
486         (JSC::jsString):
487         (JSC::jsAdd):
488
489 2009-12-11  Adam Roben  <aroben@apple.com>
490
491         Windows build fix
492
493         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Added
494         $(WebKitOutputDir)/include/private to the include path.
495
496 2009-12-11  Adam Roben  <aroben@apple.com>
497
498         Move QuartzCorePresent.h to include/private
499
500         This fixes other projects that use wtf/Platform.h
501
502         Rubber-stamped by Steve Falkenburg.
503
504         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Let VS do its thang.
505         * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Write
506         QuartzCorePresent.h to $(WebKitOutputDir)/include/private.
507
508         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
509         * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops:
510         Added $(WebKitOutputDir)/include/private to the include path.
511
512 2009-12-11  Adam Roben  <aroben@apple.com>
513
514         Fix clean builds and everything rebuilding on every build
515
516         Reviewed by Sam Weinig.
517
518         * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Don't
519         write out QuartzCorePresent.h if it exists but is older than
520         QuartzCore.h. Also, create the directory we write QuartzCorePresent.h
521         into first.
522
523 2009-12-11  Adam Roben  <aroben@apple.com>
524
525         Windows build fix for systems with spaces in their paths
526
527         * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Quote some paths.
528
529 2009-12-11  Chris Marrin  <cmarrin@apple.com>
530
531         Reviewed by Adam Roben.
532
533         Add check for presence of QuartzCore headers
534         https://bugs.webkit.org/show_bug.cgi?id=31856
535         
536         The script now checks for the presence of QuartzCore.h. If present
537         it will turn on ACCELERATED_COMPOSITING and 3D_RENDERING to enable
538         HW compositing on Windows. The script writes QuartzCorePresent.h to
539         the build directory which has a define telling whether QuartzCore is 
540         present.
541
542         * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh:
543         * wtf/Platform.h:
544
545 2009-12-11  Kent Tamura  <tkent@chromium.org>
546
547         Reviewed by Darin Adler.
548
549         Fix a problem that JSC::gregorianDateTimeToMS() returns a negative
550         value for a huge year value.
551         https://bugs.webkit.org/show_bug.cgi?id=32304
552
553         * wtf/DateMath.cpp:
554         (WTF::dateToDaysFrom1970): Renamed from dateToDayInYear, and changed the return type to double.
555         (WTF::calculateDSTOffset): Follow the dateToDaysFrom1970() change.
556         (WTF::timeClip): Use maxECMAScriptTime.
557         (JSC::gregorianDateTimeToMS): Follow the dateToDaysFrom1970() change.
558
559 2009-12-10  Adam Barth  <abarth@webkit.org>
560
561         No review, rolling out r51975.
562         http://trac.webkit.org/changeset/51975
563
564         * jit/JITStubs.cpp:
565         (JSC::DEFINE_STUB_FUNCTION):
566         * runtime/JSString.h:
567         (JSC::JSString::JSString):
568         (JSC::JSString::appendStringInConstruct):
569         * runtime/Operations.cpp:
570         (JSC::jsAddSlowCase):
571         * runtime/Operations.h:
572         (JSC::jsString):
573         (JSC::jsAdd):
574
575 2009-12-10  Oliver Hunt  <oliver@apple.com>
576
577         Reviewed by Gavin Barraclough.
578
579         Incorrect caching of prototype lookup with dictionary base
580         https://bugs.webkit.org/show_bug.cgi?id=32402
581
582         Make sure we don't add cached prototype lookup to the proto_list
583         lookup chain if the top level object is a dictionary.
584
585         * jit/JITStubs.cpp:
586         (JSC::JITThunks::tryCacheGetByID):
587
588 2009-12-10  Gavin Barraclough  <barraclough@apple.com>
589
590         Reviewed by Oliver Hunt.
591
592         https://bugs.webkit.org/show_bug.cgi?id=32400
593         Switch remaining cases of string addition to use ropes.
594
595         ~1% progression on Sunspidey.
596
597         * jit/JITStubs.cpp:
598         (JSC::DEFINE_STUB_FUNCTION):
599         * runtime/JSString.h:
600         (JSC::JSString::JSString):
601         (JSC::JSString::appendStringInConstruct):
602         * runtime/Operations.cpp:
603         (JSC::jsAddSlowCase):
604         * runtime/Operations.h:
605         (JSC::jsString):
606         (JSC::jsAdd):
607
608 2009-12-10  Kent Hansen  <kent.hansen@nokia.com>
609
610         Reviewed by Geoffrey Garen.
611
612         Remove JSObject::getPropertyAttributes() and all usage of it.
613         https://bugs.webkit.org/show_bug.cgi?id=31933
614
615         getOwnPropertyDescriptor() should be used instead.
616
617         * JavaScriptCore.exp:
618         * JavaScriptCore.order:
619         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
620         * debugger/DebuggerActivation.cpp:
621         (JSC::DebuggerActivation::getOwnPropertyDescriptor):
622         * debugger/DebuggerActivation.h:
623         * runtime/JSObject.cpp:
624         (JSC::JSObject::propertyIsEnumerable):
625         * runtime/JSObject.h:
626         * runtime/JSVariableObject.cpp:
627         * runtime/JSVariableObject.h:
628
629 2009-12-10  Gavin Barraclough  <barraclough@apple.com>
630
631         Reviewed by Oliver Hunt & Mark Rowe.
632
633         https://bugs.webkit.org/show_bug.cgi?id=32367
634         Add support for short Ropes (up to 3 entries) inline within JSString.
635         (rather than externally allocating an object to hold the rope).
636         Switch jsAdd of (JSString* + JSString*) to now make use of Ropes.
637
638         ~1% progression on Sunspidey.
639
640         * interpreter/Interpreter.cpp:
641         (JSC::Interpreter::privateExecute):
642         * jit/JITOpcodes.cpp:
643         (JSC::JIT::privateCompileCTIMachineTrampolines):
644         * jit/JITStubs.cpp:
645         (JSC::DEFINE_STUB_FUNCTION):
646         * runtime/JSString.cpp:
647         (JSC::JSString::resolveRope):
648         (JSC::JSString::toBoolean):
649         (JSC::JSString::getStringPropertyDescriptor):
650         * runtime/JSString.h:
651         (JSC::JSString::Rope::Fiber::deref):
652         (JSC::JSString::Rope::Fiber::ref):
653         (JSC::JSString::Rope::Fiber::refAndGetLength):
654         (JSC::JSString::Rope::append):
655         (JSC::JSString::JSString):
656         (JSC::JSString::~JSString):
657         (JSC::JSString::value):
658         (JSC::JSString::tryGetValue):
659         (JSC::JSString::length):
660         (JSC::JSString::canGetIndex):
661         (JSC::JSString::appendStringInConstruct):
662         (JSC::JSString::appendValueInConstructAndIncrementLength):
663         (JSC::JSString::isRope):
664         (JSC::JSString::string):
665         (JSC::JSString::ropeLength):
666         (JSC::JSString::getStringPropertySlot):
667         * runtime/Operations.h:
668         (JSC::jsString):
669         (JSC::jsAdd):
670         (JSC::resolveBase):
671
672 2009-12-09  Anders Carlsson  <andersca@apple.com>
673
674         Reviewed by Geoffrey Garen.
675
676         Fix three more things found by compiling with clang++.
677         
678         * runtime/Structure.h:
679         (JSC::StructureTransitionTable::reifySingleTransition):
680         Add the 'std' qualifier to the call to make_pair.
681
682         * wtf/DateMath.cpp:
683         (WTF::initializeDates):
684         Incrementing a bool is deprecated according to the C++ specification.
685         
686         * wtf/PtrAndFlags.h:
687         (WTF::PtrAndFlags::PtrAndFlags):
688         Name lookup should not be done in dependent bases, so explicitly qualify the call to set.
689
690 2009-12-09  Maciej Stachowiak  <mjs@apple.com>
691
692         Reviewed by Oliver Hunt.
693
694         Google reader gets stuck in the "Loading..." state and does not complete
695         https://bugs.webkit.org/show_bug.cgi?id=32256
696         <rdar://problem/7456388>
697
698         * jit/JITArithmetic.cpp:
699         (JSC::JIT::emitSlow_op_jless): Fix some backward branches.
700
701 2009-12-09  Gavin Barraclough  <barraclough@apple.com>
702
703         Reviewed by Oliver Hunt.
704
705         https://bugs.webkit.org/show_bug.cgi?id=32228
706         Make destruction of ropes non-recursive to prevent stack exhaustion.
707         Also, pass a UString& into initializeFiber rather than a Ustring::Rep*,
708         since the Rep is not being ref counted this could result in usage of a
709         Rep with refcount zero (where the Rep comes from a temporary UString
710         returned from a function).
711
712         * runtime/JSString.cpp:
713         (JSC::JSString::Rope::destructNonRecursive):
714         (JSC::JSString::Rope::~Rope):
715         * runtime/JSString.h:
716         (JSC::JSString::Rope::initializeFiber):
717         * runtime/Operations.h:
718         (JSC::concatenateStrings):
719
720 2009-12-09  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
721
722         Reviewed by Eric Seidel.
723
724         https://bugs.webkit.org/show_bug.cgi?id=31930
725
726         Update to r51457. ASSERTs changed to COMPILE_ASSERTs.
727         The speedup is 25%.
728
729         * runtime/JSGlobalData.cpp:
730         (JSC::VPtrSet::VPtrSet):
731
732 2009-12-09  Steve Block  <steveblock@google.com>
733
734         Reviewed by Adam Barth.
735
736         Updates Android Makefiles with latest additions.
737         https://bugs.webkit.org/show_bug.cgi?id=32278
738
739         * Android.mk: Modified.
740         * Android.v8.wtf.mk: Modified.
741
742 2009-12-09  Sam Weinig  <sam@webkit.org>
743
744         Reviewed by Gavin Barraclough.
745
746         Fix a bug found while trying to compile JavaScriptCore with clang++.
747
748         * yarr/RegexPattern.h:
749         (JSC::Yarr::PatternTerm::PatternTerm): Don't self assign here.  Use false instead.
750
751 2009-12-09  Anders Carlsson  <andersca@apple.com>
752
753         Reviewed by Sam Weinig.
754
755         Attempt to fix the Windows build.
756         
757         * wtf/FastMalloc.h:
758
759 2009-12-09  Anders Carlsson  <andersca@apple.com>
760
761         Reviewed by Sam Weinig.
762
763         Fix some things found while trying to compile JavaScriptCore with clang++.
764
765         * wtf/FastMalloc.h:
766         Add correct exception specifications for the allocation/deallocation operators.
767         
768         * wtf/Vector.h:
769         * wtf/VectorTraits.h:
770         Fix a bunch of struct/class mismatches.
771
772 2009-12-08  Maciej Stachowiak  <mjs@apple.com>
773
774         Reviewed by Darin Adler.
775
776         move code generation portions of Nodes.cpp to bytecompiler directory
777         https://bugs.webkit.org/show_bug.cgi?id=32284
778
779         * bytecompiler/NodesCodegen.cpp: Copied from parser/Nodes.cpp. Removed parts that
780         are not about codegen.
781         * parser/Nodes.cpp: Removed everything that is about codegen.
782
783         Update build systems:
784         
785         * Android.mk:
786         * GNUmakefile.am:
787         * JavaScriptCore.gypi:
788         * JavaScriptCore.pri:
789         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
790         * JavaScriptCore.xcodeproj/project.pbxproj:
791         * JavaScriptCoreSources.bkl:
792
793 2009-12-08  Kevin Watters  <kevinwatters@gmail.com>
794
795         Reviewed by Kevin Ollivier.
796
797         [wx] Mac plugins support.
798         
799         https://bugs.webkit.org/show_bug.cgi?id=32236
800
801         * wtf/Platform.h:
802
803 2009-12-08  Dmitry Titov  <dimich@chromium.org>
804
805         Rubber-stamped by David Levin.
806
807         Revert and reopen "Add asserts to RefCounted to make sure ref/deref happens on the right thread."
808         It may have caused massive increase of reported leaks on the bots.
809         https://bugs.webkit.org/show_bug.cgi?id=31639
810
811         * GNUmakefile.am:
812         * JavaScriptCore.gypi:
813         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
814         * JavaScriptCore.xcodeproj/project.pbxproj:
815         * runtime/Structure.cpp:
816         (JSC::Structure::Structure):
817         * wtf/RefCounted.h:
818         (WTF::RefCountedBase::ref):
819         (WTF::RefCountedBase::hasOneRef):
820         (WTF::RefCountedBase::refCount):
821         (WTF::RefCountedBase::derefBase):
822         * wtf/ThreadVerifier.h: Removed.
823
824 2009-12-08  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
825
826         Reviewed by Darin Adler.
827
828         Make WebKit build correctly on FreeBSD, IA64, and Alpha.
829         Based on work by Petr Salinger <Petr.Salinger@seznam.cz>,
830         and Colin Watson <cjwatson@ubuntu.com>.
831
832         * wtf/Platform.h:
833
834 2009-12-08  Dmitry Titov  <dimich@chromium.org>
835
836         Reviewed by Darin Adler.
837
838         Add asserts to RefCounted to make sure ref/deref happens on the right thread.
839         https://bugs.webkit.org/show_bug.cgi?id=31639
840
841         * runtime/Structure.cpp:
842         (JSC::Structure::Structure): Disable thread verification on this class since it uses addressOfCount().
843         * wtf/RefCounted.h:
844         (WTF::RefCountedBase::ref): Add ASSERT.
845         (WTF::RefCountedBase::hasOneRef): Ditto.
846         (WTF::RefCountedBase::refCount): Ditto.
847         (WTF::RefCountedBase::derefBase): Ditto.
848         (WTF::RefCountedBase::disableThreadVerification): delegate to ThreadVerifier method.
849         * wtf/ThreadVerifier.h: Added.
850         (WTF::ThreadVerifier::ThreadVerifier): New Debug-only class to verify that ref/deref of RefCounted is done on the same thread.
851         (WTF::ThreadVerifier::activate): Activates checks. Called when ref count becomes above 2.
852         (WTF::ThreadVerifier::deactivate): Deactivates checks. Called when ref count drops below 2.
853         (WTF::ThreadVerifier::disableThreadVerification): used on objects that should not be checked (StringImpl etc)
854         (WTF::ThreadVerifier::verifyThread):
855         * GNUmakefile.am: Add ThreadVerifier.h to the build file.
856         * JavaScriptCore.gypi: Ditto.
857         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto.
858         * JavaScriptCore.xcodeproj/project.pbxproj: Ditto.
859
860 2009-12-08  Steve Block  <steveblock@google.com>
861
862         Reviewed by Adam Barth.
863
864         [Android] Adds Makefiles for Android port.
865         https://bugs.webkit.org/show_bug.cgi?id=31325
866
867         * Android.mk: Added.
868         * Android.v8.wtf.mk: Added.
869
870 2009-12-07  Dmitry Titov  <dimich@chromium.org>
871
872         Rubber-stamped by Darin Adler.
873
874         Remove ENABLE_SHARED_SCRIPT flags
875         https://bugs.webkit.org/show_bug.cgi?id=32245
876         This patch was obtained by "git revert" command and then un-reverting of ChangeLog files.
877
878         * Configurations/FeatureDefines.xcconfig:
879         * wtf/Platform.h:
880
881 2009-12-07  Gavin Barraclough  <barraclough@apple.com>
882
883         Reviewed by NOBODY (Windows build fixage part I).
884
885         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
886
887 2009-12-05  Gavin Barraclough  <barraclough@apple.com>
888
889         Reviewed by Oliver Hunt.
890
891         https://bugs.webkit.org/show_bug.cgi?id=32184
892         Handle out-of-memory conditions with JSC Ropes with a JS exception, rather than crashing.
893         Switch from using fastMalloc to tryFastMalloc, pass an ExecState to record the exception on.
894
895         * API/JSCallbackObjectFunctions.h:
896         (JSC::::toString):
897         * API/JSValueRef.cpp:
898         (JSValueIsStrictEqual):
899         * JavaScriptCore.exp:
900         * bytecompiler/BytecodeGenerator.cpp:
901         (JSC::BytecodeGenerator::emitEqualityOp):
902         * debugger/DebuggerCallFrame.cpp:
903         (JSC::DebuggerCallFrame::functionName):
904         (JSC::DebuggerCallFrame::calculatedFunctionName):
905         * interpreter/Interpreter.cpp:
906         (JSC::Interpreter::callEval):
907         (JSC::Interpreter::privateExecute):
908         * jit/JITStubs.cpp:
909         (JSC::DEFINE_STUB_FUNCTION):
910         * profiler/ProfileGenerator.cpp:
911         (JSC::ProfileGenerator::addParentForConsoleStart):
912         * profiler/Profiler.cpp:
913         (JSC::Profiler::willExecute):
914         (JSC::Profiler::didExecute):
915         (JSC::Profiler::createCallIdentifier):
916         (JSC::createCallIdentifierFromFunctionImp):
917         * profiler/Profiler.h:
918         * runtime/ArrayPrototype.cpp:
919         (JSC::arrayProtoFuncIndexOf):
920         (JSC::arrayProtoFuncLastIndexOf):
921         * runtime/DateConstructor.cpp:
922         (JSC::constructDate):
923         * runtime/FunctionPrototype.cpp:
924         (JSC::functionProtoFuncToString):
925         * runtime/InternalFunction.cpp:
926         (JSC::InternalFunction::name):
927         (JSC::InternalFunction::displayName):
928         (JSC::InternalFunction::calculatedDisplayName):
929         * runtime/InternalFunction.h:
930         * runtime/JSCell.cpp:
931         (JSC::JSCell::getString):
932         * runtime/JSCell.h:
933         (JSC::JSValue::getString):
934         * runtime/JSONObject.cpp:
935         (JSC::gap):
936         (JSC::Stringifier::Stringifier):
937         (JSC::Stringifier::appendStringifiedValue):
938         * runtime/JSObject.cpp:
939         (JSC::JSObject::putDirectFunction):
940         (JSC::JSObject::putDirectFunctionWithoutTransition):
941         (JSC::JSObject::defineOwnProperty):
942         * runtime/JSObject.h:
943         * runtime/JSPropertyNameIterator.cpp:
944         (JSC::JSPropertyNameIterator::get):
945         * runtime/JSString.cpp:
946         (JSC::JSString::Rope::~Rope):
947         (JSC::JSString::resolveRope):
948         (JSC::JSString::getPrimitiveNumber):
949         (JSC::JSString::toNumber):
950         (JSC::JSString::toString):
951         (JSC::JSString::toThisString):
952         (JSC::JSString::getStringPropertyDescriptor):
953         * runtime/JSString.h:
954         (JSC::JSString::Rope::createOrNull):
955         (JSC::JSString::Rope::operator new):
956         (JSC::JSString::value):
957         (JSC::JSString::tryGetValue):
958         (JSC::JSString::getIndex):
959         (JSC::JSString::getStringPropertySlot):
960         (JSC::JSValue::toString):
961         * runtime/JSValue.h:
962         * runtime/NativeErrorConstructor.cpp:
963         (JSC::NativeErrorConstructor::NativeErrorConstructor):
964         * runtime/Operations.cpp:
965         (JSC::JSValue::strictEqualSlowCase):
966         * runtime/Operations.h:
967         (JSC::JSValue::equalSlowCaseInline):
968         (JSC::JSValue::strictEqualSlowCaseInline):
969         (JSC::JSValue::strictEqual):
970         (JSC::jsLess):
971         (JSC::jsLessEq):
972         (JSC::jsAdd):
973         (JSC::concatenateStrings):
974         * runtime/PropertyDescriptor.cpp:
975         (JSC::PropertyDescriptor::equalTo):
976         * runtime/PropertyDescriptor.h:
977         * runtime/StringPrototype.cpp:
978         (JSC::stringProtoFuncReplace):
979         (JSC::stringProtoFuncToLowerCase):
980         (JSC::stringProtoFuncToUpperCase):
981
982 2009-12-07  Nikolas Zimmermann  <nzimmermann@rim.com>
983
984         Reviewed by Holger Freyther.
985
986         Turn on (SVG) Filters support, by default.
987         https://bugs.webkit.org/show_bug.cgi?id=32224
988
989         * Configurations/FeatureDefines.xcconfig: Enable FILTERS build flag.
990
991 2009-12-07  Steve Falkenburg  <sfalken@apple.com>
992
993         Build fix. Be flexible about which version of ICU is used on Windows.
994
995         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Add optional xcopy commands to copy ICU 4.2.
996
997 2009-12-07  Maciej Stachowiak  <mjs@apple.com>
998
999         Reviewed by Oliver Hunt.
1000
1001         op_loop_if_less JIT codegen is broken for 64-bit
1002         https://bugs.webkit.org/show_bug.cgi?id=32221
1003
1004         * jit/JITOpcodes.cpp:
1005         (JSC::JIT::emit_op_loop_if_false): Fix codegen in this version - test was backwards.
1006
1007 2009-12-07  Oliver Hunt  <oliver@apple.com>
1008
1009         Reviewed by Maciej Stachowiak.
1010
1011         Object.create fails if properties on the descriptor are getters
1012         https://bugs.webkit.org/show_bug.cgi?id=32219
1013
1014         Correctly initialise the PropertySlots with the descriptor object.
1015
1016         * runtime/ObjectConstructor.cpp:
1017         (JSC::toPropertyDescriptor):
1018
1019 2009-12-06  Maciej Stachowiak  <mjs@apple.com>
1020
1021         Not reviewed, build fix.
1022
1023         Actually tested 64-bit *and* 32-bit build this time.
1024
1025         * jit/JITOpcodes.cpp:
1026         (JSC::JIT::emit_op_loop_if_false):
1027
1028 2009-12-06  Maciej Stachowiak  <mjs@apple.com>
1029
1030         Not reviewed, build fix.
1031
1032         Really really fix 64-bit build for prior patch (actually tested this time).
1033
1034         * jit/JITOpcodes.cpp:
1035         (JSC::JIT::emit_op_loop_if_false):
1036         (JSC::JIT::emitSlow_op_loop_if_false):
1037
1038 2009-12-06  Maciej Stachowiak  <mjs@apple.com>
1039
1040         Not reviewed, build fix.
1041
1042         Really fix 64-bit build for prior patch.
1043
1044         * jit/JITArithmetic.cpp:
1045         (JSC::JIT::emitSlow_op_jless):
1046
1047 2009-12-06  Maciej Stachowiak  <mjs@apple.com>
1048
1049         Not reviewed, build fix.
1050
1051         Fix 64-bit build for prior patch.
1052
1053         * jit/JITOpcodes.cpp:
1054         (JSC::JIT::emitSlow_op_loop_if_less):
1055
1056 2009-12-05  Maciej Stachowiak  <mjs@apple.com>
1057
1058         Reviewed by Oliver Hunt.
1059
1060         conway benchmark spends half it's time in op_less (jump fusion fails)
1061         https://bugs.webkit.org/show_bug.cgi?id=32190
1062
1063         <1% speedup on SunSpider and V8
1064         2x speedup on "conway" benchmark
1065         
1066         Two optimizations:
1067         1) Improve codegen for logical operators &&, || and ! in a condition context
1068         
1069         When generating code for combinations of &&, || and !, in a
1070         condition context (i.e. in an if statement or loop condition), we
1071         used to produce a value, and then separately jump based on its
1072         truthiness. Now we pass the false and true targets in, and let the
1073         logical operators generate jumps directly. This helps in four
1074         ways:
1075
1076         a) Individual clauses of a short-circuit logical operator can now
1077         jump directly to the then or else clause of an if statement (or to
1078         the top or exit of a loop) instead of jumping to a jump.
1079         
1080         b) It used to be that jump fusion with the condition of the first
1081         clause of a logical operator was inhibited, because the register
1082         was ref'd to be used later, in the actual condition jump; this no
1083         longer happens since a jump straight to the final target is
1084         generated directly.
1085
1086         c) It used to be that jump fusion with the condition of the second
1087         clause of a logical operator was inhibited, because there was a
1088         jump target right after the second clause and before the actual
1089         condition jump. But now it's no longer necessary for the first
1090         clause to jump there so jump fusion is not blocked.
1091
1092         d) We avoid generating excess mov statements in some cases.
1093         
1094         As a concrete example this source:
1095         
1096         if (!((x < q && y < q) || (t < q && z < q))) {
1097             // ...
1098         }
1099         
1100         Used to generate this bytecode:
1101         
1102         [  34] less              r1, r-15, r-19
1103         [  38] jfalse            r1, 7(->45)
1104         [  41] less              r1, r-16, r-19
1105         [  45] jtrue             r1, 14(->59)
1106         [  48] less              r1, r-17, r-19
1107         [  52] jfalse            r1, 7(->59)
1108         [  55] less              r1, r-18, r-19
1109         [  59] jtrue             r1, 17(->76)
1110         
1111         And now generates this bytecode (also taking advantage of the second optimization below):
1112         
1113         [  34] jnless            r-15, r-19, 8(->42)
1114         [  38] jless             r-16, r-19, 26(->64)
1115         [  42] jnless            r-17, r-19, 8(->50)
1116         [  46] jless             r-18, r-19, 18(->64)
1117         
1118         Note the jump fusion and the fact that there's less jump
1119         indirection - three of the four jumps go straight to the target
1120         clause instead of indirecting through another jump.
1121         
1122         2) Implement jless opcode to take advantage of the above, since we'll now often generate
1123         a less followed by a jtrue where fusion is not forbidden.
1124        
1125         * parser/Nodes.h:
1126         (JSC::ExpressionNode::hasConditionContextCodegen): Helper function to determine
1127         whether a node supports special conditional codegen. Return false as this is the default.
1128         (JSC::ExpressionNode::emitBytecodeInConditionContext): Assert not reached - only really
1129         defined for nodes that do have conditional codegen.
1130         (JSC::UnaryOpNode::expr): Add const version.
1131         (JSC::LogicalNotNode::hasConditionContextCodegen): Returne true only if subexpression
1132         supports it.
1133         (JSC::LogicalOpNode::hasConditionContextCodegen): Return true.
1134         * parser/Nodes.cpp:
1135         (JSC::LogicalNotNode::emitBytecodeInConditionContext): Implemented - just swap
1136         the true and false targets for the child node.
1137         (JSC::LogicalOpNode::emitBytecodeInConditionContext): Implemented - handle jumps
1138         directly, improving codegen quality. Also handles further nested conditional codegen.
1139         (JSC::ConditionalNode::emitBytecode): Use condition context codegen when available.
1140         (JSC::IfNode::emitBytecode): ditto
1141         (JSC::IfElseNode::emitBytecode): ditto
1142         (JSC::DoWhileNode::emitBytecode): ditto
1143         (JSC::WhileNode::emitBytecode): ditto
1144         (JSC::ForNode::emitBytecode): ditto
1145
1146         * bytecode/Opcode.h: 
1147         - Added loop_if_false opcode - needed now that falsey jumps can be backwards.
1148         - Added jless opcode to take advantage of new fusion opportunities.
1149         * bytecode/CodeBlock.cpp:
1150         (JSC::CodeBlock::dump): Handle above.
1151         * bytecompiler/BytecodeGenerator.cpp:
1152         (JSC::BytecodeGenerator::emitJumpIfTrue): Add peephole for less + jtrue ==> jless.
1153         (JSC::BytecodeGenerator::emitJumpIfFalse): Add handling of backwrds falsey jumps.
1154         * bytecompiler/BytecodeGenerator.h:
1155         (JSC::BytecodeGenerator::emitNodeInConditionContext): Wrapper to handle tracking of
1156         overly deep expressions etc.
1157         * interpreter/Interpreter.cpp:
1158         (JSC::Interpreter::privateExecute): Implement the two new opcodes (loop_if_false, jless).
1159         * jit/JIT.cpp:
1160         (JSC::JIT::privateCompileMainPass): Implement JIT support for the two new opcodes.
1161         (JSC::JIT::privateCompileSlowCases): ditto
1162         * jit/JIT.h:
1163         * jit/JITArithmetic.cpp:
1164         (JSC::JIT::emit_op_jless):
1165         (JSC::JIT::emitSlow_op_jless): ditto
1166         (JSC::JIT::emitBinaryDoubleOp): ditto
1167         * jit/JITOpcodes.cpp:
1168         (JSC::JIT::emitSlow_op_loop_if_less): ditto
1169         (JSC::JIT::emit_op_loop_if_false): ditto
1170         (JSC::JIT::emitSlow_op_loop_if_false): ditto
1171         * jit/JITStubs.cpp:
1172         * jit/JITStubs.h:
1173         (JSC::):
1174
1175 2009-12-04  Kent Hansen  <kent.hansen@nokia.com>
1176
1177         Reviewed by Darin Adler.
1178
1179         JavaScript delete operator should return false for string properties
1180         https://bugs.webkit.org/show_bug.cgi?id=32012
1181
1182         * runtime/StringObject.cpp:
1183         (JSC::StringObject::deleteProperty):
1184
1185 2009-12-03  Drew Wilson  <atwilson@chromium.org>
1186
1187         Rolled back r51633 because it causes a perf regression in Chromium.
1188
1189         * wtf/Platform.h:
1190
1191 2009-12-03  Gavin Barraclough  <barraclough@apple.com>
1192
1193         Try and fix the Windows build.
1194
1195         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:  Export a symbol that should be exported.
1196
1197 2009-12-03  Mark Rowe  <mrowe@apple.com>
1198
1199         Try and fix the Mac build.
1200
1201         * JavaScriptCore.exp:  Export a symbol that should be exported.
1202
1203 2009-12-03  Oliver Hunt  <oliver@apple.com>
1204
1205         Reviewed by Gavin Barraclough.
1206
1207         REGRESSION(4.0.3-48777): Crash in JSC::ExecState::propertyNames() (Debug-only?)
1208         https://bugs.webkit.org/show_bug.cgi?id=32133
1209
1210         Work around odd GCC-ism and correct the scopechain for use by
1211         calls made while a cachedcall is active on the callstack.
1212
1213         * interpreter/CachedCall.h:
1214         (JSC::CachedCall::newCallFrame):
1215         * runtime/JSArray.cpp:
1216         (JSC::AVLTreeAbstractorForArrayCompare::compare_key_key):
1217         * runtime/StringPrototype.cpp:
1218         (JSC::stringProtoFuncReplace):
1219
1220 2009-12-03  Gavin Barraclough  <barraclough@apple.com>
1221
1222         Reviewed by Oliver "Brraaaaiiiinnnnnzzzzzzzz" Hunt.
1223
1224         https://bugs.webkit.org/show_bug.cgi?id=32136
1225         Add a rope representation to JSString.  Presently JSString always holds its data in UString form.
1226         Instead, allow the result of a string concatenation to be represented in a tree form - with a
1227         variable sized, reference-counted rope node retaining a set of UString::Reps (or other rope nopes).
1228
1229         Strings must still currently be resolved down to a flat UString representation before being used,
1230         but by holding the string in a rope representation during construction we can avoid copying data
1231         until we know the final size of the string.
1232
1233         ~2% progression on SunSpider (~25% on date-format-xparb, ~20% on string-validate-input).
1234
1235         * JavaScriptCore.exp:
1236
1237             - Update exports.
1238
1239         * interpreter/Interpreter.cpp:
1240         (JSC::Interpreter::privateExecute):
1241
1242             - Make use of new JSString::length() method to avoid prematurely resolving ropes.
1243
1244         * jit/JITOpcodes.cpp:
1245         (JSC::JIT::privateCompileCTIMachineTrampolines):
1246
1247             - Switch the string length trampoline to read the length directly from JSString::m_length,
1248               rather than from the JSString's UString::Rep's 'len' property.
1249
1250         * jit/JITStubs.cpp:
1251         (JSC::DEFINE_STUB_FUNCTION):
1252
1253             - Modify op_add such that addition of two strings, where either or both strings are already
1254               in rope representation, produces a rope as a result.
1255
1256         * runtime/JSString.cpp:
1257         (JSC::JSString::Rope::~Rope):
1258         (JSC::copyChars):
1259         (JSC::JSString::resolveRope):
1260         (JSC::JSString::getPrimitiveNumber):
1261         (JSC::JSString::toBoolean):
1262         (JSC::JSString::toNumber):
1263         (JSC::JSString::toString):
1264         (JSC::JSString::toThisString):
1265         (JSC::JSString::getStringPropertyDescriptor):
1266         * runtime/JSString.h:
1267         (JSC::JSString::Rope::Fiber::Fiber):
1268         (JSC::JSString::Rope::Fiber::destroy):
1269         (JSC::JSString::Rope::Fiber::isRope):
1270         (JSC::JSString::Rope::Fiber::rope):
1271         (JSC::JSString::Rope::Fiber::string):
1272         (JSC::JSString::Rope::create):
1273         (JSC::JSString::Rope::initializeFiber):
1274         (JSC::JSString::Rope::ropeLength):
1275         (JSC::JSString::Rope::stringLength):
1276         (JSC::JSString::Rope::fibers):
1277         (JSC::JSString::Rope::Rope):
1278         (JSC::JSString::Rope::operator new):
1279         (JSC::JSString::JSString):
1280         (JSC::JSString::value):
1281         (JSC::JSString::length):
1282         (JSC::JSString::isRope):
1283         (JSC::JSString::rope):
1284         (JSC::JSString::string):
1285         (JSC::JSString::canGetIndex):
1286         (JSC::jsSingleCharacterSubstring):
1287         (JSC::JSString::getIndex):
1288         (JSC::jsSubstring):
1289         (JSC::JSString::getStringPropertySlot):
1290
1291             - Add rope form.
1292
1293         * runtime/Operations.h:
1294         (JSC::jsAdd):
1295         (JSC::concatenateStrings):
1296
1297             - Update string concatenation, and addition of ropes, to produce ropes.
1298
1299         * runtime/StringObject.cpp:
1300         (JSC::StringObject::getOwnPropertyNames):
1301
1302             - Make use of new JSString::length() method to avoid prematurely resolving ropes.
1303
1304 2009-11-23  Jeremy Moskovich  <jeremy@chromium.org>
1305
1306         Reviewed by Eric Seidel.
1307
1308         Switch Chrome/Mac to use Core Text APIs rather than ATSUI APIs.
1309         https://bugs.webkit.org/show_bug.cgi?id=31802
1310
1311         No test since this is already covered by existing pixel tests.
1312
1313         * wtf/Platform.h: #define USE_CORE_TEXT for Chrome/Mac.
1314
1315 2009-12-02  Oliver Hunt  <oliver@apple.com>
1316
1317         Reviewed by Gavin Barraclough.
1318
1319         Add files missed in prior patch.
1320
1321         * runtime/JSZombie.cpp:
1322         (JSC::):
1323         (JSC::JSZombie::leakedZombieStructure):
1324         * runtime/JSZombie.h: Added.
1325         (JSC::JSZombie::JSZombie):
1326         (JSC::JSZombie::isZombie):
1327         (JSC::JSZombie::classInfo):
1328         (JSC::JSZombie::isGetterSetter):
1329         (JSC::JSZombie::isAPIValueWrapper):
1330         (JSC::JSZombie::isPropertyNameIterator):
1331         (JSC::JSZombie::getCallData):
1332         (JSC::JSZombie::getConstructData):
1333         (JSC::JSZombie::getUInt32):
1334         (JSC::JSZombie::toPrimitive):
1335         (JSC::JSZombie::getPrimitiveNumber):
1336         (JSC::JSZombie::toBoolean):
1337         (JSC::JSZombie::toNumber):
1338         (JSC::JSZombie::toString):
1339         (JSC::JSZombie::toObject):
1340         (JSC::JSZombie::markChildren):
1341         (JSC::JSZombie::put):
1342         (JSC::JSZombie::deleteProperty):
1343         (JSC::JSZombie::toThisObject):
1344         (JSC::JSZombie::toThisString):
1345         (JSC::JSZombie::toThisJSString):
1346         (JSC::JSZombie::getJSNumber):
1347         (JSC::JSZombie::getOwnPropertySlot):
1348
1349 2009-12-02  Oliver Hunt  <oliver@apple.com>
1350
1351         Reviewed by Gavin Barraclough.
1352
1353         Add zombies to JSC
1354         https://bugs.webkit.org/show_bug.cgi?id=32103
1355
1356         Add a compile time flag to make the JSC collector replace "unreachable"
1357         objects with zombie objects.  The zombie object is a JSCell subclass that
1358         ASSERTs on any attempt to use the JSCell methods.  In addition there are
1359         a number of additional assertions in bottleneck code to catch zombie usage
1360         as quickly as possible.
1361
1362         Grrr. Argh. Brains.
1363
1364         * JavaScriptCore.xcodeproj/project.pbxproj:
1365         * interpreter/Register.h:
1366         (JSC::Register::Register):
1367         * runtime/ArgList.h:
1368         (JSC::MarkedArgumentBuffer::append):
1369         (JSC::ArgList::ArgList):
1370         * runtime/Collector.cpp:
1371         (JSC::Heap::destroy):
1372         (JSC::Heap::sweep):
1373         * runtime/Collector.h:
1374         * runtime/JSCell.h:
1375         (JSC::JSCell::isZombie):
1376         (JSC::JSValue::isZombie):
1377         * runtime/JSValue.h:
1378         (JSC::JSValue::decode):
1379         (JSC::JSValue::JSValue):
1380         * wtf/Platform.h:
1381
1382 2009-12-01  Jens Alfke  <snej@chromium.org>
1383
1384         Reviewed by Darin Adler.
1385
1386         Added variants of find/contains/add that allow a foreign key type to be used.
1387         This will allow AtomicString-keyed maps to be queried by C string without
1388         having to create a temporary AtomicString (see HTTPHeaderMap.)
1389         The code for this is adapted from the equivalent in HashSet.h.
1390
1391         * wtf/HashMap.h:
1392         (WTF::HashMap::find):
1393         (WTF::HashMap::contains):
1394         (WTF::HashMap::add):
1395         * wtf/HashSet.h: Changed "method" to "function member" in a comment.
1396
1397 2009-12-01  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
1398
1399         Revert 51551 because it broke GTK+.
1400
1401         * wtf/Platform.h:
1402
1403 2009-11-30  Gavin Barraclough  <barraclough@apple.com>
1404
1405         Windows Build fix.  Reviewed by NOBODY.
1406
1407         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1408
1409 2009-11-24  Gavin Barraclough  <barraclough@apple.com>
1410
1411         Reviewed by Geoff Garen.
1412
1413         Bug 31859 - Make world selection for JSC IsolatedWorlds automagical.
1414
1415         WebCore presently has to explicitly specify the world before entering into JSC,
1416         which is a little fragile (particularly since property access via a
1417         getter/setter might invoke execution). Instead derive the current world from
1418         the lexical global object.
1419         
1420         Remove the temporary duct tape of willExecute/didExecute virtual hooks on the JSGlobalData::ClientData - these are no longer necessary.
1421
1422         * API/JSBase.cpp:
1423         (JSEvaluateScript):
1424         * API/JSObjectRef.cpp:
1425         (JSObjectCallAsFunction):
1426         * JavaScriptCore.exp:
1427         * runtime/JSGlobalData.cpp:
1428         * runtime/JSGlobalData.h:
1429
1430 2009-11-30  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
1431
1432         Reviewed by Kenneth Rohde Christiansen.
1433
1434         [Qt] Remove obsolete PLATFORM(KDE) code
1435         https://bugs.webkit.org/show_bug.cgi?id=31958
1436
1437         KDE is now using unpatched QtWebKit.
1438
1439         * parser/Lexer.cpp: Remove obsolete KDE_USE_FINAL guard
1440         * wtf/Platform.h: Remove PLATFORM(KDE) definition and code 
1441         section that is guarded with it.
1442
1443 2009-11-30  Jan-Arve Sæther  <jan-arve.saether@nokia.com>
1444
1445         Reviewed by Simon Hausmann.
1446
1447         [Qt] Fix compilation with win32-icc
1448
1449         The Intel compiler does not support the __has_trivial_constructor type
1450         trait.  The Intel Compiler can report itself as _MSC_VER >= 1400. The
1451         reason for that is that the Intel Compiler depends on the Microsoft
1452         Platform SDK, and in order to try to be "fully" MS compatible it will
1453         "pretend" to be the same MS compiler as was shipped with the MS PSDK.
1454         (Thus, compiling with win32-icc with VC8 SDK will make the source code
1455         "think" the compiler at hand supports this type trait).
1456
1457         * wtf/TypeTraits.h:
1458
1459 2009-11-29  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
1460
1461         Reviewed by Eric Seidel.
1462
1463         [Qt] Mac build has JIT disabled
1464         https://bugs.webkit.org/show_bug.cgi?id=31828
1465
1466         * wtf/Platform.h: Enable JIT for Qt Mac builds
1467
1468 2009-11-28  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
1469
1470         Reviewed by Eric Seidel.
1471
1472         Apply workaround for the limitation of VirtualFree with MEM_RELEASE to all ports running on Windows
1473         https://bugs.webkit.org/show_bug.cgi?id=31943
1474
1475         * runtime/MarkStack.h:
1476         (JSC::MarkStack::MarkStackArray::shrinkAllocation):
1477
1478 2009-11-28  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
1479
1480         Reviewed by Gavin Barraclough.
1481
1482         https://bugs.webkit.org/show_bug.cgi?id=31930
1483
1484         Seems a typo. We don't need ~270k memory to determine the vptrs.
1485
1486         * runtime/JSGlobalData.cpp:
1487         (JSC::VPtrSet::VPtrSet):
1488
1489 2009-11-27  Shinichiro Hamaji  <hamaji@chromium.org>
1490
1491         Unreviewed. 
1492
1493         Move GOwnPtr* from wtf to wtf/gtk
1494         https://bugs.webkit.org/show_bug.cgi?id=31793
1495
1496         Build fix for chromium after r51423.
1497         Exclude gtk directory from chromium build.
1498
1499         * JavaScriptCore.gyp/JavaScriptCore.gyp:
1500
1501 2009-11-25  Oliver Hunt  <oliver@apple.com>
1502
1503         Reviewed by Gavin Barraclough.
1504
1505         Incorrect behaviour of jneq_null in the interpreter
1506         https://bugs.webkit.org/show_bug.cgi?id=31901
1507
1508         Correct the logic of jneq_null.  This is already covered by existing tests.
1509
1510         * interpreter/Interpreter.cpp:
1511         (JSC::Interpreter::privateExecute):
1512
1513 2009-11-26  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
1514
1515         Reviewed by Oliver Hunt.
1516
1517         Move GOwnPtr* from wtf to wtf/gtk
1518         https://bugs.webkit.org/show_bug.cgi?id=31793
1519
1520         * GNUmakefile.am: Change the path for GOwnPtr.*.
1521         * JavaScriptCore.gyp/JavaScriptCore.gyp: Remove
1522           GOwnPtr.cpp from the exclude list.
1523         * JavaScriptCore.gypi: Change the path for GOwnPtr.*.
1524         * wscript: Remove GOwnPtr.cpp from the exclude list.
1525         * wtf/GOwnPtr.cpp: Removed.
1526         * wtf/GOwnPtr.h: Removed.
1527         * wtf/Threading.h: Change the path for GOwnPtr.h.
1528         * wtf/gtk/GOwnPtr.cpp: Copied from JavaScriptCore/wtf/GOwnPtr.cpp.
1529         * wtf/gtk/GOwnPtr.h: Copied from JavaScriptCore/wtf/GOwnPtr.h.
1530         * wtf/unicode/glib/UnicodeGLib.h: Change the path for GOwnPtr.h.
1531
1532 2009-11-24  Dmitry Titov  <dimich@chromium.org>
1533
1534         Reviewed by Eric Seidel.
1535
1536         Add ENABLE_SHARED_SCRIPT feature define and flag for build-webkit
1537         https://bugs.webkit.org/show_bug.cgi?id=31444
1538
1539         * Configurations/FeatureDefines.xcconfig:
1540         * wtf/Platform.h:
1541
1542 2009-11-24  Chris Marrin  <cmarrin@apple.com>
1543
1544         Reviewed by Simon Fraser.
1545
1546         Add ability to enable ACCELERATED_COMPOSITING on Windows (currently disabled)
1547         https://bugs.webkit.org/show_bug.cgi?id=27314
1548
1549         * wtf/Platform.h:
1550
1551 2009-11-24  Jason Smith  <dark.panda@gmail.com>
1552
1553         Reviewed by Alexey Proskuryakov.
1554
1555         RegExp#exec's returned Array-like object behaves differently from
1556         regular Arrays
1557         https://bugs.webkit.org/show_bug.cgi?id=31689
1558
1559         * JavaScriptCore/runtime/RegExpConstructor.cpp: ensure that undefined
1560         values are added to the returned RegExpMatchesArray
1561
1562 2009-11-24  Oliver Hunt  <oliver@apple.com>
1563
1564         Reviewed by Alexey Proskuryakov.
1565
1566         JSON.stringify performance on undefined is very poor
1567         https://bugs.webkit.org/show_bug.cgi?id=31839
1568
1569         Switch from a UString to a Vector<UChar> when building
1570         the JSON string, allowing us to safely remove the substr-copy
1571         we otherwise did when unwinding an undefined property.
1572
1573         Also turns out to be a ~5% speedup on stringification.
1574
1575         * runtime/JSONObject.cpp:
1576         (JSC::Stringifier::StringBuilder::append):
1577         (JSC::Stringifier::stringify):
1578         (JSC::Stringifier::Holder::appendNextProperty):
1579
1580 2009-11-24  Mark Rowe  <mrowe@apple.com>
1581
1582         Fix production builds where the source tree may be read-only.
1583
1584         * JavaScriptCore.xcodeproj/project.pbxproj:
1585
1586 2009-11-23  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
1587
1588         Reviewed by Kenneth Rohde Christiansen.
1589
1590         Include "config.h" to meet Coding Style Guidelines
1591         https://bugs.webkit.org/show_bug.cgi?id=31792
1592
1593         * wtf/unicode/UTF8.cpp:
1594         * wtf/unicode/glib/UnicodeGLib.cpp:
1595         * wtf/unicode/wince/UnicodeWince.cpp:
1596
1597 2009-11-23  Geoffrey Garen  <ggaren@apple.com>
1598
1599         Reviewed by Oliver Hunt.
1600
1601         Streamlined some Math functions where we expect or know the result not
1602         to be representable as an int.
1603         
1604         SunSpider says 0.6% faster.
1605
1606         * runtime/JSNumberCell.h:
1607         (JSC::JSValue::JSValue):
1608         * runtime/JSValue.h:
1609         (JSC::JSValue::):
1610         (JSC::jsDoubleNumber):
1611         (JSC::JSValue::JSValue): Added a function for making a numeric JSValue
1612         and skipping the "can I encode this as an int?" check, avoiding the
1613         overhead of int <-> double roundtripping and double <-> double comparison
1614         and branching.
1615
1616         * runtime/MathObject.cpp:
1617         (JSC::mathProtoFuncACos):
1618         (JSC::mathProtoFuncASin):
1619         (JSC::mathProtoFuncATan):
1620         (JSC::mathProtoFuncATan2):
1621         (JSC::mathProtoFuncCos):
1622         (JSC::mathProtoFuncExp):
1623         (JSC::mathProtoFuncLog):
1624         (JSC::mathProtoFuncRandom):
1625         (JSC::mathProtoFuncSin):
1626         (JSC::mathProtoFuncSqrt):
1627         (JSC::mathProtoFuncTan): For these functions, which we expect or know
1628         to produce results not representable as ints, call jsDoubleNumber instead
1629         of jsNumber.
1630
1631 2009-11-23  Mark Rowe  <mrowe@apple.com>
1632
1633         Unreviewed. Unbreak the regression tests after r51329.
1634
1635         * API/JSBase.cpp:
1636         (JSEvaluateScript): Null-check clientData before dereferencing it.
1637         * API/JSObjectRef.cpp:
1638         (JSObjectCallAsFunction): Ditto.
1639
1640 2009-11-23  Gavin Barraclough  <barraclough@apple.com>
1641
1642         Reviewed by Geoff Garen.
1643
1644         Part 1/3 of <rdar://problem/7377477> REGRESSION: Many web pages fail to render after interesting script runs in isolated world
1645
1646         Some clients of the JavaScriptCore API expect to be able to make callbacks over the JSC API,
1647         and for this to automagically cause execution to take place in the world associated with the
1648         global object associated with the ExecState (JSContextRef) passed.  However this is not how
1649         things work - the world must be explicitly set within WebCore.
1650
1651         Making this work just for API calls to evaluate & call will be a far from perfect solution,
1652         since direct (non-API) use of JSC still relies on WebCore setting the current world correctly.
1653         A better solution would be to make this all work automagically all throughout WebCore, but this
1654         will require more refactoring.
1655
1656         Since the API is in JSC but worlds only exist in WebCore, add callbacks on the JSGlobalData::ClientData
1657         to allow it to update the current world on entry/exit via the JSC API.  This is temporary duck
1658         tape, and should be removed once the current world no longer needs to be explicitly tracked.
1659
1660         * API/JSBase.cpp:
1661         (JSEvaluateScript):
1662         * API/JSObjectRef.cpp:
1663         (JSObjectCallAsFunction):
1664         * JavaScriptCore.exp:
1665         * runtime/JSGlobalData.cpp:
1666         (JSC::JSGlobalData::ClientData::beginningExecution):
1667         (JSC::JSGlobalData::ClientData::completedExecution):
1668         * runtime/JSGlobalData.h:
1669
1670 2009-11-23  Steve Block  <steveblock@google.com>
1671
1672         Reviewed by Dmitry Titov.
1673
1674         Adds MainThreadAndroid.cpp with Android-specific WTF threading functions.
1675         https://bugs.webkit.org/show_bug.cgi?id=31807
1676
1677         * wtf/android: Added.
1678         * wtf/android/MainThreadAndroid.cpp: Added.
1679         (WTF::timeoutFired):
1680         (WTF::initializeMainThreadPlatform):
1681         (WTF::scheduleDispatchFunctionsOnMainThread):
1682
1683 2009-11-23  Alexey Proskuryakov  <ap@apple.com>
1684
1685         Reviewed by Brady Eidson.
1686
1687         https://bugs.webkit.org/show_bug.cgi?id=31748
1688         Make WebSocketHandleCFNet respect proxy auto-configuration files via CFProxySupport
1689
1690         * JavaScriptCore.exp: Export callOnMainThreadAndWait.
1691
1692 2009-11-23  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
1693
1694         Reviewed by Kenneth Rohde Christiansen.
1695
1696         [Symbian] Fix lastIndexOf() for Symbian
1697         https://bugs.webkit.org/show_bug.cgi?id=31773
1698
1699         Symbian soft floating point library has problems with operators
1700         comparing NaN to numbers. Without a workaround lastIndexOf() 
1701         function does not work.
1702
1703         Patch developed by David Leong.
1704
1705         * runtime/StringPrototype.cpp:
1706         (JSC::stringProtoFuncLastIndexOf):Add an extra test 
1707         to check for NaN for Symbian.
1708
1709 2009-11-23  Steve Block  <steveblock@google.com>
1710
1711         Reviewed by Eric Seidel.
1712
1713         Android port lacks implementation of atomicIncrement and atomicDecrement.
1714         https://bugs.webkit.org/show_bug.cgi?id=31715
1715
1716         * wtf/Threading.h: Modified.
1717         (WTF::atomicIncrement): Added Android implementation.
1718         (WTF::atomicDecrement): Added Android implementation.
1719
1720 2009-11-22  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
1721
1722         Unreviewed.
1723
1724         [Qt] Sort source lists and remove obsolete comments 
1725         from the build system.
1726
1727         * JavaScriptCore.pri:
1728
1729 2009-11-21  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
1730
1731         Reviewed by Eric Seidel.
1732
1733         [Qt][Mac] Turn on multiple JavaScript threads for QtWebkit on Mac
1734         https://bugs.webkit.org/show_bug.cgi?id=31753
1735
1736         * wtf/Platform.h:
1737
1738 2009-11-19  Steve Block  <steveblock@google.com>
1739
1740         Android port lacks configuration in Platform.h and config.h.
1741         https://bugs.webkit.org/show_bug.cgi?id=31671
1742
1743         * wtf/Platform.h: Modified. Added Android-specific configuration.
1744
1745 2009-11-19  Alexey Proskuryakov  <ap@apple.com>
1746
1747         Reviewed by Darin Adler.
1748
1749         https://bugs.webkit.org/show_bug.cgi?id=31690
1750         Make SocketStreamHandleCFNet work on Windows
1751
1752         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1753         * wtf/MainThread.cpp:
1754         (WTF::FunctionWithContext::FunctionWithContext):
1755         (WTF::dispatchFunctionsFromMainThread):
1756         (WTF::callOnMainThreadAndWait):
1757         * wtf/MainThread.h:
1758         Re-add callOnMainThreadAndWait(), which was removed in bug 23926.
1759
1760 2009-11-19  Dmitry Titov  <dimich@chromium.org>
1761
1762         Reviewed by David Levin.
1763
1764         isMainThread() on Chromium (Mac and Linux) is so slow it timeouts LayoutTests..
1765         https://bugs.webkit.org/show_bug.cgi?id=31693
1766
1767         * wtf/ThreadingPthreads.cpp:
1768         (WTF::initializeThreading): grab and use the pthread_t of the main thread instead of ThreadIdentifier.
1769         (WTF::isMainThread): Ditto.
1770
1771 2009-11-19  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
1772
1773         Reviewed by Darin Adler.
1774
1775         Remove HAVE(STRING_H) guard from JavaScriptCore
1776         https://bugs.webkit.org/show_bug.cgi?id=31668
1777
1778         * config.h:
1779         * runtime/UString.cpp:
1780
1781 2009-11-19  Dumitru Daniliuc  <dumi@chromium.org>
1782
1783         Reviewed by Dmitry Titov.
1784
1785         Fixing a bug in MessageQueue::removeIf() that leads to an
1786         assertion failure.
1787
1788         https://bugs.webkit.org/show_bug.cgi?id=31657
1789
1790         * wtf/MessageQueue.h:
1791         (WTF::MessageQueue::removeIf):
1792
1793 2009-11-19  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
1794
1795         Reviewed by Darin Adler.
1796
1797         Remove HAVE(FLOAT_H) guard
1798         https://bugs.webkit.org/show_bug.cgi?id=31661
1799
1800         JavaScriptCore has a dependency on float.h, there is
1801         no need to guard float.h.
1802
1803         * runtime/DatePrototype.cpp: Remove include directive 
1804         for float.h as it is included in MathExtras.h already.
1805         * runtime/Operations.cpp: Ditto.
1806         * runtime/UString.cpp: Ditto.
1807         * wtf/dtoa.cpp: Ditto.
1808         * wtf/MathExtras.h: Remove HAVE(FLOAT_H) guard.
1809         * wtf/Platform.h: Ditto.
1810
1811 2009-11-19  Thiago Macieira <thiago.macieira@nokia.com>
1812
1813         Reviewed by Simon Hausmann.
1814
1815         Build fix for 32-bit Sparc machines: these machines are big-endian.
1816
1817         * wtf/Platform.h:
1818
1819 2009-11-18  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
1820
1821         Reviewed by Kenneth Rohde Christiansen.
1822
1823         [Qt] Remove support for Qt v4.3 or older versions
1824         https://bugs.webkit.org/show_bug.cgi?id=29469
1825
1826         * JavaScriptCore.pro:
1827         * jsc.pro:
1828         * wtf/unicode/qt4/UnicodeQt4.h:
1829
1830 2009-11-18  Kent Tamura  <tkent@chromium.org>
1831
1832         Reviewed by Darin Adler.
1833
1834         Move UString::from(double) implementation to new
1835         WTF::doubleToStringInJavaScriptFormat(), and expose it because WebCore
1836         code will use it.
1837         https://bugs.webkit.org/show_bug.cgi?id=31330
1838
1839         - Introduce new function createRep(const char*, unsigned) and
1840           UString::UString(const char*, unsigned) to reduce 2 calls to strlen().
1841         - Fix a bug that dtoa() doesn't update *rve if the input value is NaN
1842           or Infinity.
1843
1844         No new tests because this doesn't change the behavior.
1845
1846         * JavaScriptCore.exp:
1847         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1848         * runtime/UString.cpp:
1849         (JSC::createRep):
1850         (JSC::UString::UString):
1851         (JSC::UString::from): Move the code to doubleToStringInJavaScriptFormat().
1852         * runtime/UString.h:
1853         * wtf/dtoa.cpp:
1854         (WTF::dtoa): Fix a bug about rve.
1855         (WTF::append): A helper for doubleToStringInJavaScriptFormat().
1856         (WTF::doubleToStringInJavaScriptFormat): Move the code from UString::from(double).
1857         * wtf/dtoa.h:
1858
1859 2009-11-18  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
1860
1861         Reviewed by Kenneth Rohde Christiansen.
1862
1863         [Qt] Remove WTF_USE_JAVASCRIPTCORE_BINDINGS as it is no longer used
1864         https://bugs.webkit.org/show_bug.cgi?id=31643
1865
1866         * JavaScriptCore.pro:
1867
1868 2009-11-18  Nate Chapin  <japhet@chromium.org>
1869
1870         Reviewed by Darin Fisher.
1871
1872         Remove Chromium's unnecessary dependency on wtf's tcmalloc files.
1873
1874         https://bugs.webkit.org/show_bug.cgi?id=31648
1875
1876         * JavaScriptCore.gyp/JavaScriptCore.gyp:
1877
1878 2009-11-18  Thiago Macieira <thiago.macieira@nokia.com>
1879
1880         Reviewed by Gavin Barraclough.
1881
1882         [Qt] Implement symbol hiding for JSC's JIT functions.
1883
1884         These functions are implemented directly in assembly, so they need the
1885         proper directives to enable/disable visibility. On ELF systems, it's
1886         .hidden, whereas on Mach-O systems (Mac) it's .private_extern. On
1887         Windows, it's not necessary since you have to explicitly export. I
1888         also implemented the AIX idiom, though it's unlikely anyone will
1889         implement AIX/POWER JIT.
1890         https://bugs.webkit.org/show_bug.cgi?id=30864
1891
1892         * jit/JITStubs.cpp:
1893
1894 2009-11-18  Oliver Hunt  <oliver@apple.com>
1895
1896         Reviewed by Alexey Proskuryakov.
1897
1898         Interpreter may do an out of range access when throwing an exception in the profiler.
1899         https://bugs.webkit.org/show_bug.cgi?id=31635
1900
1901         Add bounds check.
1902
1903         * interpreter/Interpreter.cpp:
1904         (JSC::Interpreter::throwException):
1905
1906 2009-11-18  Gabor Loki  <loki@inf.u-szeged.hu>
1907
1908         Reviewed by Darin Adler.
1909
1910         Fix the clobber list of cacheFlush for ARM and Thumb2 on Linux
1911         https://bugs.webkit.org/show_bug.cgi?id=31631
1912
1913         * jit/ExecutableAllocator.h:
1914         (JSC::ExecutableAllocator::cacheFlush):
1915
1916 2009-11-18  Harald Fernengel  <harald.fernengel@nokia.com>
1917
1918         Reviewed by Simon Hausmann.
1919
1920         [Qt] Fix detection of linux-g++
1921
1922         Never use "linux-g++*" to check for linux-g++, since this will break embedded
1923         builds which use linux-arm-g++ and friends. Use 'linux*-g++*' to check for any
1924         g++ on linux mkspec.
1925
1926         * JavaScriptCore.pri:
1927
1928 2009-11-17  Jon Honeycutt  <jhoneycutt@apple.com>
1929
1930         Add JSContextRefPrivate.h to list of copied files.
1931
1932         Reviewed by Mark Rowe.
1933
1934         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
1935
1936 2009-11-17  Martin Robinson  <martin.james.robinson@gmail.com>
1937
1938         Reviewed by Adam Barth.
1939
1940         [GTK] Style cleanup for GOwnPtr
1941         https://bugs.webkit.org/show_bug.cgi?id=31506
1942
1943         Remove forward declaration in GOwnPtr and do some style cleanup.
1944
1945         * wtf/GOwnPtr.cpp:
1946         * wtf/GOwnPtr.h:
1947         (WTF::GOwnPtr::GOwnPtr):
1948         (WTF::GOwnPtr::~GOwnPtr):
1949         (WTF::GOwnPtr::get):
1950         (WTF::GOwnPtr::release):
1951         (WTF::GOwnPtr::outPtr):
1952         (WTF::GOwnPtr::set):
1953         (WTF::GOwnPtr::clear):
1954         (WTF::GOwnPtr::operator*):
1955         (WTF::GOwnPtr::operator->):
1956         (WTF::GOwnPtr::operator!):
1957         (WTF::GOwnPtr::operator UnspecifiedBoolType):
1958         (WTF::GOwnPtr::swap):
1959         (WTF::swap):
1960         (WTF::operator==):
1961         (WTF::operator!=):
1962         (WTF::getPtr):
1963         (WTF::freeOwnedGPtr):
1964
1965 2009-11-17  Oliver Hunt  <oliver@apple.com>
1966
1967         Reviewed by Maciej Stachowiak.
1968
1969         Incorrect use of JavaScriptCore API in DumpRenderTree
1970         https://bugs.webkit.org/show_bug.cgi?id=31577
1971
1972         Add assertions to the 'toJS' functions to catch mistakes like
1973         this early.  Restructure existing code which blindly passed potentially
1974         null values to toJS when forwarding exceptions so that a null check is
1975         performed first.
1976
1977         * API/APICast.h:
1978         (toJS):
1979         (toJSForGC):
1980         * API/JSCallbackObjectFunctions.h:
1981         (JSC::::getOwnPropertySlot):
1982         (JSC::::put):
1983         (JSC::::deleteProperty):
1984         (JSC::::construct):
1985         (JSC::::hasInstance):
1986         (JSC::::call):
1987         (JSC::::toNumber):
1988         (JSC::::toString):
1989         (JSC::::staticValueGetter):
1990         (JSC::::callbackGetter):
1991         * API/tests/testapi.c: Fix errors in the API tester.
1992         (MyObject_getProperty):
1993         (MyObject_convertToType):
1994         (EvilExceptionObject_convertToType):
1995
1996 2009-11-16  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
1997
1998         Reviewed by Gavin Barraclough.
1999
2000         https://bugs.webkit.org/show_bug.cgi?id=31050
2001
2002         Minor fixes for JSVALUE32_64: branchConvertDoubleToInt32
2003         failed on a CortexA8 CPU, but not on a simulator; and
2004         JITCall.cpp modifications was somehow not committed to mainline.
2005
2006         * assembler/ARMAssembler.h:
2007         (JSC::ARMAssembler::fmrs_r):
2008         * assembler/MacroAssemblerARM.h:
2009         (JSC::MacroAssemblerARM::branchConvertDoubleToInt32):
2010         * jit/JITCall.cpp:
2011         (JSC::JIT::compileOpCall):
2012
2013 2009-11-16  Joerg Bornemann  <joerg.bornemann@trolltech.com>
2014
2015         Reviewed by Simon Hausmann.
2016
2017         Fix Qt build on Windows CE 6.
2018
2019         * JavaScriptCore.pri: Add missing include path.
2020         * wtf/Platform.h: Include ce_time.h for Windows CE 6.
2021
2022 2009-11-13  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
2023
2024         Reviewed by Gavin Barraclough.
2025
2026         https://bugs.webkit.org/show_bug.cgi?id=31050
2027
2028         Adding optimization support for mode JSVALUE32_64
2029         on ARM systems.
2030
2031         * jit/JIT.h:
2032         * jit/JITCall.cpp:
2033         (JSC::JIT::compileOpCall):
2034         * jit/JITPropertyAccess.cpp:
2035         (JSC::JIT::emit_op_method_check):
2036         (JSC::JIT::compileGetByIdHotPath):
2037         (JSC::JIT::compileGetByIdSlowCase):
2038         (JSC::JIT::emit_op_put_by_id):
2039
2040 2009-11-14  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
2041
2042         Reviewed by Gavin Barraclough.
2043
2044         https://bugs.webkit.org/show_bug.cgi?id=31050
2045
2046         Adding JSVALUE32_64 support for ARM (but not turning it
2047         on by default). All optimizations must be disabled, since
2048         this patch is only the first of a series of patches.
2049
2050         During the work, a lot of x86 specific code revealed and
2051         made platform independent.
2052         See revisions: 50531 50541 50593 50594 50595
2053
2054         * assembler/ARMAssembler.h:
2055         (JSC::ARMAssembler::):
2056         (JSC::ARMAssembler::fdivd_r):
2057         * assembler/MacroAssemblerARM.h:
2058         (JSC::MacroAssemblerARM::lshift32):
2059         (JSC::MacroAssemblerARM::neg32):
2060         (JSC::MacroAssemblerARM::rshift32):
2061         (JSC::MacroAssemblerARM::branchOr32):
2062         (JSC::MacroAssemblerARM::set8):
2063         (JSC::MacroAssemblerARM::setTest8):
2064         (JSC::MacroAssemblerARM::loadDouble):
2065         (JSC::MacroAssemblerARM::divDouble):
2066         (JSC::MacroAssemblerARM::convertInt32ToDouble):
2067         (JSC::MacroAssemblerARM::zeroDouble):
2068         * jit/JIT.cpp:
2069         * jit/JIT.h:
2070         * jit/JITOpcodes.cpp:
2071         (JSC::JIT::privateCompileCTIMachineTrampolines):
2072         * jit/JITStubs.cpp:
2073         * wtf/StdLibExtras.h:
2074
2075 2009-11-13  Dominik Röttsches  <dominik.roettsches@access-company.com>
2076
2077         Reviewed by Eric Seidel.
2078
2079         Unify TextBoundaries implementations by only relying on WTF Unicode abstractions
2080         https://bugs.webkit.org/show_bug.cgi?id=31468
2081
2082         Adding isAlphanumeric abstraction, required
2083         by TextBoundaries.cpp.
2084
2085         * wtf/unicode/glib/UnicodeGLib.h:
2086         (WTF::Unicode::isAlphanumeric):
2087         * wtf/unicode/icu/UnicodeIcu.h:
2088         (WTF::Unicode::isAlphanumeric):
2089
2090 2009-11-13  Norbert Leser  <norbert.leser&nokia.com>
2091
2092         Reviewed by Eric Seidel.
2093
2094         Added macros for USERINCLUDE paths within symbian blocks
2095         to guarantee inclusion of respective header files from local path
2096         first (to avoid clashes with same names of header files in system include path).
2097
2098         * JavaScriptCore.pri:
2099
2100 2009-11-13  Oliver Hunt  <oliver@apple.com>
2101
2102         Reviewed by Geoff Garen.
2103
2104         JSValueProtect and JSValueUnprotect don't protect API wrapper values
2105         https://bugs.webkit.org/show_bug.cgi?id=31485
2106
2107         Make JSValueProtect/Unprotect use a new 'toJS' function, 'toJSForGC' that
2108         does not attempt to to strip out API wrapper objects.
2109
2110         * API/APICast.h:
2111         (toJSForGC):
2112         * API/JSValueRef.cpp:
2113         (JSValueProtect):
2114         (JSValueUnprotect):
2115         * API/tests/testapi.c:
2116         (makeGlobalNumberValue):
2117         (main):
2118
2119 2009-11-13  İsmail Dönmez  <ismail@namtrac.org>
2120
2121         Reviewed by Antti Koivisto.
2122
2123         Fix typo, ce_time.cpp should be ce_time.c
2124
2125         * JavaScriptCore.pri:
2126
2127 2009-11-12  Steve VanDeBogart  <vandebo@chromium.org>
2128
2129         Reviewed by Adam Barth.
2130
2131         Calculate the time offset only if we were able to parse
2132         the date string. This saves an IPC in Chromium for
2133         invalid date strings.
2134         https://bugs.webkit.org/show_bug.cgi?id=31416
2135
2136         * wtf/DateMath.cpp:
2137         (WTF::parseDateFromNullTerminatedCharacters):
2138         (JSC::parseDateFromNullTerminatedCharacters):
2139
2140 2009-11-12  Oliver Hunt  <oliver@apple.com>
2141
2142         Rollout r50896 until i can work out why it causes failures.
2143
2144         * bytecompiler/BytecodeGenerator.cpp:
2145         (JSC::BytecodeGenerator::emitReturn):
2146         * interpreter/Interpreter.cpp:
2147         (JSC::Interpreter::execute):
2148         * parser/Nodes.cpp:
2149         (JSC::EvalNode::emitBytecode):
2150
2151 2009-11-12  Steve Falkenburg  <sfalken@apple.com>
2152
2153         Reviewed by Stephanie Lewis.
2154
2155         Remove LIBRARY directive from def file to fix Debug_All target.
2156
2157         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2158
2159 2009-11-12  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
2160
2161         Rubber-stamped by Holger Freyther.
2162
2163         Revert r50204, since it makes DRT crash on 32 bits release builds
2164         for GTK+.
2165
2166         * wtf/FastMalloc.h:
2167
2168 2009-11-12  Oliver Hunt  <oliver@apple.com>
2169
2170         Reviewed by Gavin Barraclough.
2171
2172         Start unifying entry logic for function and eval code.
2173
2174         Eval now uses a ret instruction to end execution, and sets up
2175         a callframe more in line with what we do for function entry.
2176
2177         * bytecompiler/BytecodeGenerator.cpp:
2178         (JSC::BytecodeGenerator::emitReturn):
2179         * interpreter/Interpreter.cpp:
2180         (JSC::Interpreter::execute):
2181         * parser/Nodes.cpp:
2182         (JSC::EvalNode::emitBytecode):
2183
2184 2009-11-12  Richard Moe Gustavsen  <richard.gustavsen@nokia.com>
2185
2186         Reviewed by Kenneth Rohde Christiansen.
2187
2188         [Qt] Disable pthread_setname_np.
2189
2190         This allows Qt builds on Mac from 10.6 to run on earlier version
2191         where this symbol is not present.
2192         https://bugs.webkit.org/show_bug.cgi?id=31403
2193
2194         * wtf/Platform.h:
2195
2196 2009-11-12  Thiago Macieira <thiago.macieira@nokia.com>
2197
2198         Reviewed by Kenneth Rohde Christiansen.
2199
2200         [Qt] Fix linking on Linux 32-bit.
2201
2202         It was missing the ".text" directive at the top of the file,
2203         indicating that code would follow. Without it, the assembler created
2204         "NOTYPE" symbols, which would result in linker errors.
2205         https://bugs.webkit.org/show_bug.cgi?id=30863
2206
2207         * jit/JITStubs.cpp:
2208
2209 2009-11-11  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
2210
2211         Reviewed by Alexey Proskuryakov.
2212
2213         Refactor multiple JavaScriptCore threads
2214         https://bugs.webkit.org/show_bug.cgi?id=31328
2215
2216         Remove the id field from the PlatformThread structure 
2217         as it is not used.
2218
2219         * runtime/Collector.cpp:
2220         (JSC::getCurrentPlatformThread):
2221         (JSC::suspendThread):
2222         (JSC::resumeThread):
2223         (JSC::getPlatformThreadRegisters):
2224
2225 2009-11-10  Geoffrey Garen  <ggaren@apple.com>
2226
2227         Linux build fix: Added an #include for UINT_MAX.
2228
2229         * runtime/WeakRandom.h:
2230
2231 2009-11-10  Geoffrey Garen  <ggaren@apple.com>
2232
2233         JavaScriptGlue build fix: Marked a file 'private' instead of 'project'.
2234
2235         * JavaScriptCore.xcodeproj/project.pbxproj:
2236
2237 2009-11-10  Geoffrey Garen  <ggaren@apple.com>
2238
2239         Reviewed by Gavin "avGni arBalroguch" Barraclough.
2240
2241         Faster Math.random, based on GameRand.
2242         
2243         SunSpider says 1.4% faster.
2244
2245         * GNUmakefile.am:
2246         * JavaScriptCore.gypi:
2247         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2248         * JavaScriptCore.xcodeproj/project.pbxproj: Added the header to the project.
2249
2250         * runtime/JSGlobalData.cpp:
2251         (JSC::JSGlobalData::JSGlobalData):
2252         * runtime/JSGlobalData.h: Use an object to track random number generation
2253         state, initialized to the current time.
2254
2255         * runtime/MathObject.cpp:
2256         (JSC::MathObject::MathObject):
2257         (JSC::mathProtoFuncRandom): Use the new hotness.
2258
2259         * runtime/WeakRandom.h: Added.
2260         (JSC::WeakRandom::WeakRandom):
2261         (JSC::WeakRandom::get):
2262         (JSC::WeakRandom::advance): The new hotness.
2263
2264 2009-11-09  Geoffrey Garen  <ggaren@apple.com>
2265
2266         Reviewed by Oliver Hunt.
2267
2268         Imported the v8 DST cache.
2269         
2270         SunSpider says 1.5% faster.
2271
2272         * runtime/JSGlobalData.cpp:
2273         (JSC::JSGlobalData::resetDateCache): Reset the DST cache when resetting
2274         other date data.
2275
2276         * runtime/JSGlobalData.h:
2277         (JSC::DSTOffsetCache::DSTOffsetCache):
2278         (JSC::DSTOffsetCache::reset): Added a struct for the DST cache.
2279
2280         * wtf/DateMath.cpp:
2281         (WTF::calculateDSTOffsetSimple):
2282         (WTF::calculateDSTOffset):
2283         (WTF::parseDateFromNullTerminatedCharacters):
2284         (JSC::getDSTOffset):
2285         (JSC::gregorianDateTimeToMS):
2286         (JSC::msToGregorianDateTime):
2287         (JSC::parseDateFromNullTerminatedCharacters):
2288         * wtf/DateMath.h: The imported code for probing and updating the cache.
2289
2290 2009-11-09  Geoffrey Garen  <ggaren@apple.com>
2291
2292         Reviewed by Oliver Hunt.
2293
2294         Fixed an edge case that could cause the engine not to notice a timezone
2295         change.
2296         
2297         No test because this case would require manual intervention to change
2298         the timezone during the test.
2299         
2300         SunSpider reports no change.
2301
2302         * runtime/DateInstanceCache.h:
2303         (JSC::DateInstanceCache::DateInstanceCache):
2304         (JSC::DateInstanceCache::reset): Added a helper function for resetting
2305         this cache. Also, shrank the cache, since we'll be resetting it often.
2306
2307         * runtime/JSGlobalData.cpp:
2308         (JSC::JSGlobalData::resetDateCache): Include resetting the DateInstanceCache
2309         in resetting Date data. (Otherwise, a cache hit could bypass a necessary
2310         timezone update check.)
2311
2312 2009-11-09  Geoffrey Garen  <ggaren@apple.com>
2313
2314         Reviewed by Sam Weinig.
2315
2316         Some manual inlining and constant propogation in Date code.
2317         
2318         SunSpider reports a 0.4% speedup on date-*, no overall speedup. Shark
2319         says some previously evident stalls are now gone.
2320
2321         * runtime/DateConstructor.cpp:
2322         (JSC::callDate):
2323         * runtime/DateConversion.cpp:
2324         (JSC::formatTime):
2325         (JSC::formatTimeUTC): Split formatTime into UTC and non-UTC variants.
2326
2327         * runtime/DateConversion.h:
2328         * runtime/DateInstance.cpp:
2329         (JSC::DateInstance::calculateGregorianDateTime):
2330         (JSC::DateInstance::calculateGregorianDateTimeUTC):
2331         * runtime/DateInstance.h:
2332         (JSC::DateInstance::gregorianDateTime):
2333         (JSC::DateInstance::gregorianDateTimeUTC): Split gregorianDateTime into
2334         a UTC and non-UTC variant, and split each variant into a fast inline
2335         case and a slow out-of-line case.
2336
2337         * runtime/DatePrototype.cpp:
2338         (JSC::formatLocaleDate):
2339         (JSC::dateProtoFuncToString):
2340         (JSC::dateProtoFuncToUTCString):
2341         (JSC::dateProtoFuncToISOString):
2342         (JSC::dateProtoFuncToDateString):
2343         (JSC::dateProtoFuncToTimeString):
2344         (JSC::dateProtoFuncGetFullYear):
2345         (JSC::dateProtoFuncGetUTCFullYear):
2346         (JSC::dateProtoFuncToGMTString):
2347         (JSC::dateProtoFuncGetMonth):
2348         (JSC::dateProtoFuncGetUTCMonth):
2349         (JSC::dateProtoFuncGetDate):
2350         (JSC::dateProtoFuncGetUTCDate):
2351         (JSC::dateProtoFuncGetDay):
2352         (JSC::dateProtoFuncGetUTCDay):
2353         (JSC::dateProtoFuncGetHours):
2354         (JSC::dateProtoFuncGetUTCHours):
2355         (JSC::dateProtoFuncGetMinutes):
2356         (JSC::dateProtoFuncGetUTCMinutes):
2357         (JSC::dateProtoFuncGetSeconds):
2358         (JSC::dateProtoFuncGetUTCSeconds):
2359         (JSC::dateProtoFuncGetTimezoneOffset):
2360         (JSC::setNewValueFromTimeArgs):
2361         (JSC::setNewValueFromDateArgs):
2362         (JSC::dateProtoFuncSetYear):
2363         (JSC::dateProtoFuncGetYear): Updated for the gregorianDateTime change above.
2364
2365 2009-11-09  Geoffrey Garen  <ggaren@apple.com>
2366
2367         Build fix: export a new symbol.
2368
2369         * JavaScriptCore.exp:
2370         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2371
2372 2009-11-09  Geoffrey Garen  <ggaren@apple.com>
2373
2374         Reviewed by Sam "Home Wrecker" Weinig.
2375
2376         Added a tiny cache for Date parsing.
2377         
2378         SunSpider says 1.2% faster.
2379
2380         * runtime/DateConversion.cpp:
2381         (JSC::parseDate): Try to reuse the last parsed Date, if present.
2382
2383         * runtime/JSGlobalData.cpp:
2384         (JSC::JSGlobalData::resetDateCache):
2385         * runtime/JSGlobalData.h: Added storage for last parsed Date. Refactored
2386         this code to make resetting the date cache easier.
2387
2388         * runtime/JSGlobalObject.h:
2389         (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): Updated for
2390         refactoring.
2391
2392         * wtf/DateMath.cpp:
2393         (JSC::parseDateFromNullTerminatedCharacters):
2394         * wtf/DateMath.h: Changed ExecState to be first parameter, as is the JSC custom.
2395
2396 2009-11-09  Oliver Hunt  <oliver@apple.com>
2397
2398         Reviewed by Gavin Barraclough.
2399
2400         Can cache prototype lookups on uncacheable dictionaries.
2401         https://bugs.webkit.org/show_bug.cgi?id=31198
2402
2403         Replace fromDictionaryTransition with flattenDictionaryObject and
2404         flattenDictionaryStructure.  This change is necessary as we need to
2405         guarantee that our attempt to convert away from a dictionary structure
2406         will definitely succeed, and in some cases this requires mutating the
2407         object storage itself.
2408
2409         * interpreter/Interpreter.cpp:
2410         (JSC::Interpreter::tryCacheGetByID):
2411         * jit/JITStubs.cpp:
2412         (JSC::JITThunks::tryCacheGetByID):
2413         (JSC::DEFINE_STUB_FUNCTION):
2414         * runtime/BatchedTransitionOptimizer.h:
2415         (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer):
2416         * runtime/JSObject.h:
2417         (JSC::JSObject::flattenDictionaryObject):
2418         * runtime/Operations.h:
2419         (JSC::normalizePrototypeChain):
2420         * runtime/Structure.cpp:
2421         (JSC::Structure::flattenDictionaryStructure):
2422         (JSC::comparePropertyMapEntryIndices):
2423         * runtime/Structure.h:
2424
2425 2009-11-09  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
2426
2427         Not reviewed, build fix.
2428
2429         Remove extra character from r50701.
2430
2431         * JavaScriptCore.pri:
2432
2433 2009-11-09  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
2434
2435         Not reviewed, build fix.
2436
2437         Revert r50695 because it broke QtWebKit (clean builds).
2438
2439         * JavaScriptCore.pri:
2440
2441 2009-11-09  Norbert Leser  <norbert.leser@nokia.com>
2442
2443         Reviewed by Kenneth Rohde Christiansen.
2444
2445         Prepended $$PWD to GENERATED_SOURCES_DIR to avoid potential ambiguities when included from WebCore.pro.
2446         Some preprocessors consider this GENERATED_SOURCES_DIR relative to current invoking dir (e.g., ./WebCore),
2447         and not the working dir of JavaCriptCore.pri (i.e., ../JavaScriptCore/).
2448
2449         * JavaScriptCore.pri:
2450
2451 2009-11-09  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
2452
2453         Reviewed by Kenneth Rohde Christiansen.
2454
2455         Use explicit parentheses to silence gcc 4.4 -Wparentheses warnings
2456         https://bugs.webkit.org/show_bug.cgi?id=31040
2457
2458         * interpreter/Interpreter.cpp:
2459         (JSC::Interpreter::privateExecute):
2460
2461 2009-11-08  David Levin  <levin@chromium.org>
2462
2463         Reviewed by NOBODY (speculative snow leopard and windows build fixes).
2464
2465         * wtf/DateMath.cpp:
2466         (WTF::parseDateFromNullTerminatedCharacters):
2467         (JSC::gregorianDateTimeToMS):
2468         (JSC::msToGregorianDateTime):
2469         (JSC::parseDateFromNullTerminatedCharacters):
2470         * wtf/DateMath.h:
2471         (JSC::GregorianDateTime::GregorianDateTime):
2472
2473 2009-11-08  David Levin  <levin@chromium.org>
2474
2475         Reviewed by NOBODY (chromium build fix).
2476         
2477         Hopefully, the last build fix.
2478
2479         Create better separation in DateMath about the JSC
2480         and non-JSC portions. Also, only expose the non-JSC
2481         version in the exports.
2482
2483         * JavaScriptCore.exp:
2484         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2485         * wtf/DateMath.cpp:
2486         (WTF::parseDateFromNullTerminatedCharacters):
2487         (JSC::getUTCOffset):
2488         (JSC::gregorianDateTimeToMS):
2489         (JSC::msToGregorianDateTime):
2490         (JSC::parseDateFromNullTerminatedCharacters):
2491         * wtf/DateMath.h:
2492         (JSC::gmtoffset):
2493
2494 2009-11-08  David Levin  <levin@chromium.org>
2495
2496         Reviewed by NOBODY (chromium build fix).
2497
2498         For the change in DateMath.
2499
2500         * config.h:
2501         * wtf/DateMath.cpp:
2502
2503 2009-11-06  Geoffrey Garen  <ggaren@apple.com>
2504
2505         Windows build fix: export some symbols.
2506
2507         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2508
2509 2009-11-06  Geoffrey Garen  <ggaren@apple.com>
2510
2511         Build fix: updated export file.
2512
2513         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2514
2515 2009-11-06  Geoffrey Garen  <ggaren@apple.com>
2516
2517         Build fix: added some #includes.
2518
2519         * wtf/CurrentTime.h:
2520         * wtf/DateMath.h:
2521
2522 2009-11-06  Geoffrey Garen  <ggaren@apple.com>
2523
2524         Reviewed by Oliver Hunt.
2525         
2526         https://bugs.webkit.org/show_bug.cgi?id=31197
2527         Implemented a timezone cache not based on Mac OS X's notify_check API.
2528         
2529         If the VM calculates the local timezone offset from UTC, it caches the
2530         result until the end of the current VM invocation. (We don't want to cache
2531         forever, because the user's timezone may change over time.)
2532         
2533         This removes notify_* overhead on Mac, and, more significantly, removes
2534         OS time and date call overhead on non-Mac platforms.
2535
2536         ~8% speedup on Date microbenchmark on Mac. SunSpider reports maybe a tiny
2537         speedup on Mac. (Speedup on non-Mac platforms should be even more noticeable.)
2538
2539         * JavaScriptCore.exp:
2540
2541         * interpreter/CachedCall.h:
2542         (JSC::CachedCall::CachedCall):
2543         * interpreter/Interpreter.cpp:
2544         (JSC::Interpreter::execute):
2545         * runtime/JSGlobalObject.h:
2546         (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): Made the 
2547         DynamicGlobalObjectScope constructor responsible for checking whether a
2548         dynamicGlobalObject has already been set. This eliminated some duplicate
2549         client code, and allowed me to avoid adding even more duplicate client
2550         code. Made DynamicGlobalObjectScope responsible for resetting the
2551         local timezone cache upon first entry to the VM.
2552
2553         * runtime/DateConstructor.cpp:
2554         (JSC::constructDate):
2555         (JSC::callDate):
2556         (JSC::dateParse):
2557         (JSC::dateUTC):
2558         * runtime/DateConversion.cpp:
2559         (JSC::parseDate):
2560         * runtime/DateConversion.h:
2561         * runtime/DateInstance.cpp:
2562         (JSC::DateInstance::gregorianDateTime):
2563         * runtime/DateInstance.h:
2564         * runtime/DateInstanceCache.h:
2565         * runtime/DatePrototype.cpp:
2566         (JSC::setNewValueFromTimeArgs):
2567         (JSC::setNewValueFromDateArgs):
2568         (JSC::dateProtoFuncSetYear):
2569         * runtime/InitializeThreading.cpp:
2570         (JSC::initializeThreadingOnce):
2571         * runtime/JSGlobalData.cpp:
2572         (JSC::JSGlobalData::JSGlobalData):
2573         * runtime/JSGlobalData.h:
2574         * wtf/DateMath.cpp:
2575         (WTF::getCurrentUTCTime):
2576         (WTF::getCurrentUTCTimeWithMicroseconds):
2577         (WTF::getLocalTime):
2578         (JSC::getUTCOffset): Use the new cache. Also, see below.
2579         (JSC::gregorianDateTimeToMS):
2580         (JSC::msToGregorianDateTime):
2581         (JSC::initializeDates):
2582         (JSC::parseDateFromNullTerminatedCharacters): Simplified the way this function
2583         accounts for the local timezone offset, to accomodate our new caching API,
2584         and a (possibly misguided) caller in WebCore. Also, see below.
2585         * wtf/DateMath.h:
2586         (JSC::GregorianDateTime::GregorianDateTime): Moved most of the code in
2587         DateMath.* into the JSC namespace. The code needed to move so it could
2588         naturally interact with ExecState and JSGlobalData to support caching.
2589         Logically, it seemed right to move it, too, since this code is not really
2590         as low-level as the WTF namespace might imply -- it implements a set of
2591         date parsing and conversion quirks that are finely tuned to the JavaScript
2592         language. Also removed the Mac OS X notify_* infrastructure.
2593         
2594         * wtf/CurrentTime.h:
2595         (WTF::currentTimeMS):
2596         (WTF::getLocalTime): Moved the rest of the DateMath code here, and renamed
2597         it to make it consistent with WTF's currentTime function.
2598
2599 2009-11-06  Gabor Loki  <loki@inf.u-szeged.hu>
2600
2601         Unreviewed trivial buildfix after r50595.
2602
2603         Rename the remaining rshiftPtr calls to rshift32
2604
2605         * jit/JITArithmetic.cpp:
2606         (JSC::JIT::emit_op_rshift):
2607         * jit/JITInlineMethods.h:
2608         (JSC::JIT::emitFastArithImmToInt):
2609
2610 2009-11-06  Gavin Barraclough  <barraclough@apple.com>
2611
2612         Reviewed by Oliver Hunt.
2613
2614         Tidy up the shift methods on the macro-assembler interface.
2615
2616         Currently behaviour of shifts of a magnitude > 0x1f is undefined.
2617         Instead defined that all shifts are masked to this range.  This makes a lot of
2618         practical sense, both since having undefined behaviour is not particularly
2619         desirable, and because this behaviour is commonly required (particularly since
2620         it is required bt ECMA-262 for shifts).
2621
2622         Update the ARM assemblers to provide this behaviour.  Remove (now) redundant
2623         masks from JITArithmetic, and remove rshiftPtr (this was used in case that
2624         could be rewritten in a simpler form using rshift32, only optimized JSVALUE32
2625         on x86-64, which uses JSVALUE64!)
2626
2627         * assembler/MacroAssembler.h:
2628         * assembler/MacroAssemblerARM.h:
2629         (JSC::MacroAssemblerARM::lshift32):
2630         (JSC::MacroAssemblerARM::rshift32):
2631         * assembler/MacroAssemblerARMv7.h:
2632         (JSC::MacroAssemblerARMv7::lshift32):
2633         (JSC::MacroAssemblerARMv7::rshift32):
2634         * assembler/MacroAssemblerX86_64.h:
2635         * jit/JITArithmetic.cpp:
2636         (JSC::JIT::emit_op_lshift):
2637         (JSC::JIT::emit_op_rshift):
2638
2639 2009-11-05  Gavin Barraclough  <barraclough@apple.com>
2640
2641         Rubber Stamped by Oliver Hunt.
2642
2643         Remove a magic number (1) from the JIT, instead compute the value with OBJECT_OFFSET.
2644
2645         * jit/JITInlineMethods.h:
2646         (JSC::JIT::emitPutJITStubArg):
2647         (JSC::JIT::emitPutJITStubArgConstant):
2648         (JSC::JIT::emitGetJITStubArg):
2649         (JSC::JIT::emitPutJITStubArgFromVirtualRegister):
2650         * jit/JITStubCall.h:
2651         (JSC::JITStubCall::JITStubCall):
2652         (JSC::JITStubCall::getArgument):
2653         * jit/JITStubs.h:
2654
2655 2009-11-05  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
2656
2657         Reviewed by Gavin Barraclough.
2658
2659         https://bugs.webkit.org/show_bug.cgi?id=31159
2660         Fix branchDouble behaviour on ARM THUMB2 JIT.
2661
2662         The x86 branchDouble behaviour is reworked, and all JIT
2663         ports should follow the x86 port. See bug 31104 and 31151
2664
2665         This patch contains a fix for the traditional ARM port
2666
2667         * assembler/ARMAssembler.h:
2668         (JSC::ARMAssembler::):
2669         (JSC::ARMAssembler::fmrs_r):
2670         (JSC::ARMAssembler::ftosid_r):
2671         * assembler/MacroAssemblerARM.h:
2672         (JSC::MacroAssemblerARM::):
2673         (JSC::MacroAssemblerARM::branchDouble):
2674         (JSC::MacroAssemblerARM::branchConvertDoubleToInt32):
2675
2676 2009-11-05  Chris Jerdonek  <chris.jerdonek@gmail.com>
2677
2678         Reviewed by Eric Seidel.
2679
2680         Removed the "this is part of the KDE project" comments from 
2681         all *.h, *.cpp, *.idl, and *.pm files.
2682         
2683         https://bugs.webkit.org/show_bug.cgi?id=31167
2684         
2685         The maintenance and architecture page in the project wiki lists
2686         this as a task.
2687         
2688         This change includes no changes or additions to test cases 
2689         since the change affects only comments.
2690         
2691         * wtf/wince/FastMallocWince.h:
2692
2693 2009-11-05  Gabor Loki  <loki@inf.u-szeged.hu>
2694
2695         Reviewed by Gavin Barraclough.
2696
2697         Use ARMv7 specific encoding for immediate constants on ARMv7 target
2698         https://bugs.webkit.org/show_bug.cgi?id=31060
2699
2700         * assembler/ARMAssembler.cpp:
2701         (JSC::ARMAssembler::getOp2): Use INVALID_IMM
2702         (JSC::ARMAssembler::getImm): Use encodeComplexImm for complex immediate
2703         (JSC::ARMAssembler::moveImm): Ditto.
2704         (JSC::ARMAssembler::encodeComplexImm): Encode a constant by one or two
2705         instructions or a PC relative load.
2706         * assembler/ARMAssembler.h: Use INVALID_IMM if a constant cannot be
2707         encoded as an immediate constant.
2708         (JSC::ARMAssembler::):
2709         (JSC::ARMAssembler::movw_r): 16-bit immediate load
2710         (JSC::ARMAssembler::movt_r): High halfword 16-bit immediate load
2711         (JSC::ARMAssembler::getImm16Op2): Encode immediate constant for
2712         movw_r and mowt_r
2713
2714 2009-11-04  Mark Mentovai  <mark@chromium.org>
2715
2716         Reviewed by Mark Rowe.
2717
2718         Provide TARGETING_TIGER and TARGETING_LEOPARD as analogues to
2719         BUILDING_ON_TIGER and BUILDING_ON_LEOPARD.  The TARGETING_ macros
2720         consider the deployment target; the BUILDING_ON_ macros consider the
2721         headers being built against.
2722
2723         * wtf/Platform.h:
2724
2725 2009-11-04  Gavin Barraclough  <barraclough@apple.com>
2726
2727         Reviewed by Oliver Hunt.
2728
2729         https://bugs.webkit.org/show_bug.cgi?id=31151
2730         Fix branchDouble behaviour on ARM THUMB2 JIT.
2731
2732         The ARMv7 JIT is currently using ARMv7Assembler::ConditionEQ to branch
2733         for DoubleEqualOrUnordered, however this is incorrect – ConditionEQ won't
2734         branch on unordered operands.  Similarly, DoubleLessThanOrUnordered &
2735         DoubleLessThanOrEqualOrUnordered use ARMv7Assembler::ConditionLO &
2736         ARMv7Assembler::ConditionLS, whereas they should be using
2737         ARMv7Assembler::ConditionLT & ARMv7Assembler::ConditionLE.
2738
2739         Fix these, and fill out the missing DoubleConditions.
2740
2741         * assembler/MacroAssemblerARMv7.h:
2742         (JSC::MacroAssemblerARMv7::):
2743         (JSC::MacroAssemblerARMv7::branchDouble):
2744
2745 2009-11-04  Gavin Barraclough  <barraclough@apple.com>
2746
2747         Rubber Stamped by Oliver Hunt.
2748
2749         Enable native call optimizations on ARMv7.  (Existing ARM_TRADITIONAL
2750         implementation was generic, worked perfectly, just needed turning on).
2751
2752         * jit/JITOpcodes.cpp:
2753         * wtf/Platform.h:
2754
2755 2009-11-04  Gavin Barraclough  <barraclough@apple.com>
2756
2757         Rubber Stamped by Mark Rowe, Oliver Hunt, and Sam Weinig.
2758
2759         Add a missing assert to the ARMv7 JIT.
2760
2761         * assembler/ARMv7Assembler.h:
2762         (JSC::ARMThumbImmediate::ARMThumbImmediate):
2763
2764 2009-11-04  Mark Rowe  <mrowe@apple.com>
2765
2766         Rubber-stamped by Oliver Hunt.
2767
2768         Remove bogus op_ prefix on dumped version of three opcodes.
2769
2770         * bytecode/CodeBlock.cpp:
2771         (JSC::CodeBlock::dump):
2772
2773 2009-11-04  Mark Rowe  <mrowe@apple.com>
2774
2775         Reviewed by Sam Weinig.
2776
2777         Fix dumping of constants in bytecode so that they aren't printed as large positive register numbers.
2778
2779         We do this by having the registerName function return information about the constant if the register
2780         number corresponds to a constant.  This requires that registerName, and several functions that call it,
2781         be converted to member functions of CodeBlock so that the constant value can be retrieved.  The
2782         ExecState also needs to be threaded down through these functions so that it can be passed on to
2783         constantName when needed.
2784
2785         * bytecode/CodeBlock.cpp:
2786         (JSC::constantName):
2787         (JSC::CodeBlock::registerName):
2788         (JSC::CodeBlock::printUnaryOp):
2789         (JSC::CodeBlock::printBinaryOp):
2790         (JSC::CodeBlock::printConditionalJump):
2791         (JSC::CodeBlock::printGetByIdOp):
2792         (JSC::CodeBlock::printPutByIdOp):
2793         (JSC::CodeBlock::dump):
2794         * bytecode/CodeBlock.h:
2795         (JSC::CodeBlock::isConstantRegisterIndex):
2796
2797 2009-11-04  Pavel Heimlich  <tropikhajma@gmail.com>
2798
2799         Reviewed by Alexey Proskuryakov.
2800
2801         https://bugs.webkit.org/show_bug.cgi?id=30647
2802         Solaris build failure due to strnstr.
2803
2804         * wtf/StringExtras.h: Enable strnstr on Solaris, too.
2805
2806 2009-11-04  Gavin Barraclough  <barraclough@apple.com>
2807
2808         Reviewed by Oliver Hunt.
2809
2810         https://bugs.webkit.org/show_bug.cgi?id=31104
2811         Refactor x86-specific behaviour out of the JIT.
2812
2813         - Add explicit double branch conditions for ordered and unordered comparisons (presently the brehaviour is a mix).
2814         - Refactor double to int conversion out into the MacroAssembler.
2815         - Remove broken double to int conversion for !JSVALUE32_64 builds - this code was broken and slowing us down, fixing it showed it not to be an improvement.
2816         - Remove exclusion of double to int conversion from (1 % X) cases in JSVALUE32_64 builds - if this was of benefit this is no longer the case; simplify.
2817
2818         * assembler/MacroAssemblerARM.h:
2819         (JSC::MacroAssemblerARM::):
2820         * assembler/MacroAssemblerARMv7.h:
2821         (JSC::MacroAssemblerARMv7::):
2822         * assembler/MacroAssemblerX86Common.h:
2823         (JSC::MacroAssemblerX86Common::):
2824         (JSC::MacroAssemblerX86Common::convertInt32ToDouble):
2825         (JSC::MacroAssemblerX86Common::branchDouble):
2826         (JSC::MacroAssemblerX86Common::branchConvertDoubleToInt32):
2827         * jit/JITArithmetic.cpp:
2828         (JSC::JIT::emitBinaryDoubleOp):
2829         (JSC::JIT::emit_op_div):
2830         (JSC::JIT::emitSlow_op_jnless):
2831         (JSC::JIT::emitSlow_op_jnlesseq):
2832         * jit/JITOpcodes.cpp:
2833         (JSC::JIT::emit_op_jfalse):
2834
2835 2009-11-04  Mark Mentovai  <mark@chromium.org>
2836
2837         Reviewed by Eric Seidel.
2838
2839         Remove BUILDING_ON_LEOPARD from JavaScriptCore.gyp.  This is supposed
2840         to be set as needed only in wtf/Platform.h.
2841
2842         * JavaScriptCore.gyp/JavaScriptCore.gyp:
2843
2844 2009-11-02  Oliver Hunt  <oliver@apple.com>
2845
2846         Reviewed by Gavin Barraclough.
2847
2848         REGRESSION (r48573): JSC may incorrectly cache chain lookups with a dictionary at the head of the chain
2849         https://bugs.webkit.org/show_bug.cgi?id=31045
2850
2851         Add guards to prevent caching of prototype chain lookups with dictionaries at the
2852         head of the chain.  Also add a few tighter assertions to cached prototype lookups
2853         to catch this in future.
2854
2855         * interpreter/Interpreter.cpp:
2856         (JSC::Interpreter::tryCacheGetByID):
2857         (JSC::Interpreter::privateExecute):
2858         * jit/JITStubs.cpp:
2859         (JSC::JITThunks::tryCacheGetByID):
2860
2861 2009-11-02  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
2862
2863         Reviewed by Darin Adler.
2864
2865         PLATFORM(CF) should be set when building for Qt on Darwin
2866         https://bugs.webkit.org/show_bug.cgi?id=23671
2867
2868         * wtf/Platform.h: Turn on CF support if both QT and DARWIN
2869         platforms are defined.
2870
2871 2009-11-02  Dmitry Titov  <dimich@chromium.org>
2872
2873         Reviewed by David Levin.
2874
2875         Remove threadsafe refcounting from tasks used with WTF::MessageQueue.
2876         https://bugs.webkit.org/show_bug.cgi?id=30612
2877
2878         * wtf/MessageQueue.h:
2879         (WTF::MessageQueue::alwaysTruePredicate):
2880         (WTF::MessageQueue::~MessageQueue):
2881         (WTF::MessageQueue::append):
2882         (WTF::MessageQueue::appendAndCheckEmpty):
2883         (WTF::MessageQueue::prepend):
2884         (WTF::MessageQueue::waitForMessage):
2885         (WTF::MessageQueue::waitForMessageFilteredWithTimeout):
2886         (WTF::MessageQueue::tryGetMessage):
2887         (WTF::MessageQueue::removeIf):
2888         The MessageQueue is changed to act as a queue of OwnPtr<DataType>. It takes ownership
2889         of posted tasks and passes it to the new owner (in another thread) when the task is fetched.
2890         All methods have arguments of type PassOwnPtr<DataType> and return the same type.
2891
2892         * wtf/Threading.cpp:
2893         (WTF::createThread):
2894         Superficial change to trigger rebuild of JSC project on Windows,
2895         workaround for https://bugs.webkit.org/show_bug.cgi?id=30890
2896
2897 2009-10-30  Geoffrey Garen  <ggaren@apple.com>
2898
2899         Reviewed by Oliver Hunt.
2900
2901         Fixed failing layout test: restore a special case I accidentally deleted.
2902
2903         * runtime/DatePrototype.cpp:
2904         (JSC::setNewValueFromDateArgs): In the case of applying a change to a date
2905         that is NaN, reset the date to 0 *and* then apply the change; don't just
2906         reset the date to 0.
2907
2908 2009-10-30  Geoffrey Garen  <ggaren@apple.com>
2909
2910         Windows build fix: update for object-to-pointer change.
2911
2912         * runtime/DatePrototype.cpp:
2913         (JSC::formatLocaleDate):
2914
2915 2009-10-29  Geoffrey Garen  <ggaren@apple.com>
2916
2917         Reviewed by Darin Adler.
2918
2919         https://bugs.webkit.org/show_bug.cgi?id=30942
2920         Use pointers instead of copies to pass GregorianDateTime objects around.
2921         
2922         SunSpider reports a shocking 4.5% speedup on date-format-xparb, and 1.3%
2923         speedup on date-format-tofte.
2924
2925         * runtime/DateInstance.cpp:
2926         (JSC::DateInstance::gregorianDateTime):
2927         * runtime/DateInstance.h:
2928         * runtime/DatePrototype.cpp:
2929         (JSC::formatLocaleDate):
2930         (JSC::dateProtoFuncToString):
2931         (JSC::dateProtoFuncToUTCString):
2932         (JSC::dateProtoFuncToISOString):
2933         (JSC::dateProtoFuncToDateString):
2934         (JSC::dateProtoFuncToTimeString):
2935         (JSC::dateProtoFuncGetFullYear):
2936         (JSC::dateProtoFuncGetUTCFullYear):
2937         (JSC::dateProtoFuncToGMTString):
2938         (JSC::dateProtoFuncGetMonth):
2939         (JSC::dateProtoFuncGetUTCMonth):
2940         (JSC::dateProtoFuncGetDate):
2941         (JSC::dateProtoFuncGetUTCDate):
2942         (JSC::dateProtoFuncGetDay):
2943         (JSC::dateProtoFuncGetUTCDay):
2944         (JSC::dateProtoFuncGetHours):
2945         (JSC::dateProtoFuncGetUTCHours):
2946         (JSC::dateProtoFuncGetMinutes):
2947         (JSC::dateProtoFuncGetUTCMinutes):
2948         (JSC::dateProtoFuncGetSeconds):
2949         (JSC::dateProtoFuncGetUTCSeconds):
2950         (JSC::dateProtoFuncGetTimezoneOffset):
2951         (JSC::setNewValueFromTimeArgs):
2952         (JSC::setNewValueFromDateArgs):
2953         (JSC::dateProtoFuncSetYear):
2954         (JSC::dateProtoFuncGetYear): Renamed getGregorianDateTime to gregorianDateTime,
2955         since it no longer has an out parameter. Uses 0 to indicate invalid dates.
2956
2957 2009-10-30  Zoltan Horvath  <zoltan@webkit.org>
2958
2959         Reviewed by Darin Adler.
2960
2961         Allow custom memory allocation control for JavaScriptCore's ListHashSet
2962         https://bugs.webkit.org/show_bug.cgi?id=30853
2963
2964         Inherits ListHashSet class from FastAllocBase because it is
2965         instantiated by 'new' in WebCore/rendering/RenderBlock.cpp:1813.
2966
2967         * wtf/ListHashSet.h:
2968
2969 2009-10-30  Oliver Hunt  <oliver@apple.com>
2970
2971         Reviewed by Gavin Barraclough.
2972
2973         Regression: crash enumerating properties of an object with getters or setters
2974         https://bugs.webkit.org/show_bug.cgi?id=30948
2975
2976         Add a guard to prevent us trying to cache property enumeration on
2977         objects with getters or setters.
2978
2979         * runtime/JSPropertyNameIterator.cpp:
2980         (JSC::JSPropertyNameIterator::create):
2981
2982 2009-10-30  Roland Steiner  <rolandsteiner@chromium.org>
2983
2984         Reviewed by Eric Seidel.
2985
2986         Remove ENABLE_RUBY guards as discussed with Dave Hyatt and Maciej Stachowiak.
2987
2988         Bug 28420 -  Implement HTML5 <ruby> rendering
2989         (https://bugs.webkit.org/show_bug.cgi?id=28420)
2990  
2991         No new tests (no functional change).
2992
2993         * Configurations/FeatureDefines.xcconfig:
2994
2995 2009-10-29  Oliver Hunt  <oliver@apple.com>
2996
2997         Reviewed by Maciej Stachowiak.
2998
2999         REGRESSION (r50218-r50262): E*TRADE accounts page is missing content
3000         https://bugs.webkit.org/show_bug.cgi?id=30947
3001         <rdar://problem/7348833>
3002
3003         The logic for flagging that a structure has non-enumerable properties
3004         was in addPropertyWithoutTransition, rather than in the core Structure::put
3005         method.  Despite this I was unable to produce a testcase that caused
3006         the failure that etrade was experiencing, but the new assertion in
3007         getEnumerablePropertyNames triggers on numerous layout tests without
3008         the fix, so in effecti all for..in enumeration in any test ends up
3009         doing the required consistency check.
3010
3011         * runtime/Structure.cpp:
3012         (JSC::Structure::addPropertyWithoutTransition):
3013         (JSC::Structure::put):
3014         (JSC::Structure::getEnumerablePropertyNames):
3015         (JSC::Structure::checkConsistency):
3016
3017 2009-10-29  Gabor Loki  <loki@inf.u-szeged.hu>
3018
3019         Reviewed by Gavin Barraclough.
3020
3021         Add cacheFlush support for Thumb-2 on Linux
3022         https://bugs.webkit.org/show_bug.cgi?id=30865
3023
3024         * jit/ExecutableAllocator.h:
3025         (JSC::ExecutableAllocator::cacheFlush):
3026
3027 2009-10-28  Gavin Barraclough  <barraclough@apple.com>
3028
3029         Reviewed by Oliver Hunt.
3030
3031         JSC JIT on ARMv7 cannot link jumps >16Mb range
3032         https://bugs.webkit.org/show_bug.cgi?id=30891
3033
3034         Start planing all relative jumps as move-32-bit-immediate-to-register-BX.
3035         In the cases where the jump would fall within a relative jump range, use a relative jump.
3036
3037         * JavaScriptCore.xcodeproj/project.pbxproj:
3038         * assembler/ARMv7Assembler.h:
3039         (JSC::ARMv7Assembler::~ARMv7Assembler):
3040         (JSC::ARMv7Assembler::LinkRecord::LinkRecord):
3041         (JSC::ARMv7Assembler::):
3042         (JSC::ARMv7Assembler::executableCopy):
3043         (JSC::ARMv7Assembler::linkJump):
3044         (JSC::ARMv7Assembler::relinkJump):
3045         (JSC::ARMv7Assembler::setInt32):
3046         (JSC::ARMv7Assembler::isB):
3047         (JSC::ARMv7Assembler::isBX):
3048         (JSC::ARMv7Assembler::isMOV_imm_T3):
3049         (JSC::ARMv7Assembler::isMOVT):
3050         (JSC::ARMv7Assembler::isNOP_T1):
3051         (JSC::ARMv7Assembler::isNOP_T2):
3052         (JSC::ARMv7Assembler::linkJumpAbsolute):
3053         (JSC::ARMv7Assembler::twoWordOp5i6Imm4Reg4EncodedImmFirst):
3054         (JSC::ARMv7Assembler::twoWordOp5i6Imm4Reg4EncodedImmSecond):
3055         (JSC::ARMv7Assembler::ARMInstructionFormatter::twoWordOp5i6Imm4Reg4EncodedImm):
3056         * assembler/MacroAssemblerARMv7.h:
3057         (JSC::MacroAssemblerARMv7::makeJump):
3058         (JSC::MacroAssemblerARMv7::makeBranch):
3059         * jit/JIT.h:
3060         * wtf/Platform.h:
3061
3062 2009-10-28  Oliver Hunt  <oliver@apple.com>
3063
3064         Reviewed by Geoff Garen.
3065
3066         Improve for..in enumeration performance
3067         https://bugs.webkit.org/show_bug.cgi?id=30887
3068
3069         Improve indexing of an object with a for..in iterator by
3070         identifying cases where get_by_val is being used with a iterator
3071         as the subscript and replace it with a new get_by_pname
3072         bytecode.  get_by_pname then optimizes lookups that directly access
3073         the base object.
3074
3075         * bytecode/CodeBlock.cpp:
3076         (JSC::CodeBlock::dump):
3077         * bytecode/Opcode.h:
3078         * bytecompiler/BytecodeGenerator.cpp:
3079         (JSC::BytecodeGenerator::emitGetByVal):
3080         * bytecompiler/BytecodeGenerator.h:
3081         (JSC::BytecodeGenerator::pushOptimisedForIn):
3082         (JSC::BytecodeGenerator::popOptimisedForIn):
3083         * interpreter/Interpreter.cpp:
3084         (JSC::Interpreter::privateExecute):
3085         * jit/JIT.cpp:
3086         (JSC::JIT::privateCompileMainPass):
3087         (JSC::JIT::privateCompileSlowCases):
3088         * jit/JIT.h:
3089         * jit/JITPropertyAccess.cpp:
3090         (JSC::JIT::compileGetDirectOffset):
3091         (JSC::JIT::emit_op_get_by_pname):
3092         (JSC::JIT::emitSlow_op_get_by_pname):
3093         * parser/Nodes.cpp:
3094         (JSC::ForInNode::emitBytecode):
3095         * runtime/JSObject.h:
3096         * runtime/JSPropertyNameIterator.cpp:
3097         (JSC::JSPropertyNameIterator::create):
3098         * runtime/JSPropertyNameIterator.h:
3099         (JSC::JSPropertyNameIterator::getOffset):
3100         (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
3101         * runtime/JSValue.h:
3102         (JSC::JSValue::):
3103         * runtime/Structure.cpp:
3104         (JSC::Structure::addPropertyTransition):
3105         (JSC::Structure::changePrototypeTransition):
3106         (JSC::Structure::despecifyFunctionTransition):
3107         (JSC::Structure::addAnonymousSlotsTransition):
3108         (JSC::Structure::getterSetterTransition):
3109         (JSC::Structure::toDictionaryTransition):
3110         (JSC::Structure::addPropertyWithoutTransition):
3111           Track the existence (or not) of non-enumerable properties.
3112         * runtime/Structure.h:
3113         (JSC::Structure::propertyStorageCapacity):
3114         (JSC::Structure::propertyStorageSize):
3115         (JSC::Structure::hasNonEnumerableProperties):
3116         (JSC::Structure::hasAnonymousSlots):
3117
3118 2009-10-28  Dmitry Titov  <dimich@chromium.org>
3119
3120         Not reviewed, attemp to fix Windows build.
3121
3122         Touch the cpp file to cause recompile.
3123
3124         * wtf/Threading.cpp:
3125         (WTF::threadEntryPoint):
3126
3127 2009-10-28  Dmitry Titov  <dimich@chromium.org>
3128
3129         Reviewed by David Levin.
3130
3131         https://bugs.webkit.org/show_bug.cgi?id=30805
3132         Add MessageQueue::removeIf(Predicate&) to remove certain tasks without pulling them from the queue.
3133         Existing Database tests cover this since Database removes tasks when it is stopped.
3134
3135         * wtf/MessageQueue.h:
3136         (WTF::::removeIf):
3137
3138 2009-10-28  Afonso R. Costa Jr.  <afonso.costa@openbossa.org>
3139
3140         Reviewed by Oliver Hunt.
3141
3142         [Qt] Enable YARR when YARR_JIT is enabled
3143         https://bugs.webkit.org/show_bug.cgi?id=30730
3144
3145         When enabling or disabling JIT using JAVASCRIPTCORE_JIT, the ENABLE_YARR should
3146         be toggled also.
3147
3148         * JavaScriptCore.pri:
3149
3150 2009-10-24  Martin Robinson  <martin.james.robinson@gmail.com>
3151
3152         Reviewed by Oliver Hunt.
3153
3154         Fix strict aliasing warning by switching reinterpret_cast to bitwise_cast.
3155
3156         strict-aliasing warnings in JSFunction.h
3157         https://bugs.webkit.org/show_bug.cgi?id=27869
3158
3159         * runtime/JSFunction.h:
3160         (JSC::JSFunction::nativeFunction):
3161         (JSC::JSFunction::scopeChain):
3162         (JSC::JSFunction::setScopeChain):
3163         (JSC::JSFunction::setNativeFunction):
3164
3165 2009-10-28  Jan-Arve Sæther <jan-arve.saether@nokia.com>
3166
3167         Reviewed by Tor Arne Vestbø.
3168
3169         Build-fix for 64-bit Windows
3170
3171         * wtf/Platform.h: Make sure to use WTF_USE_JSVALUE64
3172
3173 2009-10-28  Gavin Barraclough  <barraclough@apple.com>
3174
3175         Reviewed by NOBODY (build fix!).
3176
3177         * jit/JIT.h:
3178
3179 2009-10-26  Holger Hans Peter Freyther  <zecke@selfish.org>
3180
3181         Rubber-stamped by Darin Adler.
3182
3183         Export fastMalloc, fastCalloc, fastRealloc and fastFree on GCC/Unix
3184         https://bugs.webkit.org/show_bug.cgi?id=30769
3185
3186         When using -fvisibility=hidden to hide all internal symbols by default
3187         the malloc symbols will be hidden as well. For memory instrumentation
3188         it is needed to provide an instrumented version of these symbols and
3189         override the normal routines and by changing the visibility back to
3190         default this becomes possible.
3191
3192         The only other solution would be to use system malloc instead of the
3193         TCmalloc implementation but this will not allow to analyze memory
3194         behavior with the default allocator.
3195
3196         * wtf/FastMalloc.h: Define WTF_FAST_MALLOC_EXPORT for GCC and !darwin
3197
3198 2009-10-27  Gavin Barraclough  <barraclough@apple.com>
3199
3200         Rubber Stamped by Samuel Q. Weinig.
3201
3202         Make the asserts protecting the offsets in the JIT more descriptive.
3203
3204         * jit/JIT.h:
3205         * jit/JITCall.cpp:
3206         (JSC::JIT::compileOpCall):
3207         * jit/JITPropertyAccess.cpp:
3208         (JSC::JIT::emit_op_method_check):
3209         (JSC::JIT::compileGetByIdHotPath):
3210         (JSC::JIT::compileGetByIdSlowCase):
3211         (JSC::JIT::emit_op_put_by_id):
3212
3213 2009-10-27  Geoffrey Garen  <ggaren@apple.com>
3214
3215         Reviewed by Sam Weinig.
3216
3217         A little bit of refactoring in the date code.
3218
3219         * JavaScriptCore.exp: Don't export this unused symbol.
3220
3221         * runtime/DateConstructor.cpp:
3222         (JSC::constructDate):
3223
3224         * runtime/DateInstance.cpp:
3225         (JSC::DateInstance::DateInstance):
3226         * runtime/DateInstance.h: Removed some unused functions. Changed the default
3227         constructor to ensure that a DateInstance is always initialized.
3228
3229         * runtime/DatePrototype.cpp:
3230         (JSC::DatePrototype::DatePrototype): Pass an initializer to our constructor,
3231         since it now requires one.
3232
3233         * wtf/DateMath.cpp:
3234         (WTF::msToGregorianDateTime): Only compute our offset from UTC if our
3235         output will require it. Otherwise, our offset is 0.
3236
3237 2009-10-27  Geoffrey Garen  <ggaren@apple.com>
3238
3239         Build fix: Mark DateInstaceCache.h private, so other frameworks can see it.
3240
3241         * JavaScriptCore.xcodeproj/project.pbxproj:
3242
3243 2009-10-27  Geoffrey Garen  <ggaren@apple.com>
3244
3245         Build fix: re-readded this file.
3246
3247         * runtime/DateInstanceCache.h: Added.
3248         (JSC::DateInstanceData::create):
3249         (JSC::DateInstanceData::DateInstanceData):
3250         (JSC::DateInstanceCache::DateInstanceCache):
3251         (JSC::DateInstanceCache::add):
3252         (JSC::DateInstanceCache::lookup):
3253
3254 2009-10-27  Geoffrey Garen  <ggaren@apple.com>
3255
3256         Reviewed by Darin Adler and Oliver Hunt.
3257
3258         https://bugs.webkit.org/show_bug.cgi?id=30800
3259         Cache recently computed date data.
3260         
3261         SunSpider reports a ~0.5% speedup, mostly from date-format-tofte.js.
3262
3263         * GNUmakefile.am:
3264         * JavaScriptCore.gypi:
3265         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3266         * JavaScriptCore.xcodeproj/project.pbxproj: Added new file.
3267
3268         * runtime/DateInstance.cpp:
3269         (JSC::DateInstance::DateInstance):
3270         (JSC::DateInstance::getGregorianDateTime): Use the shared cache.
3271
3272         * runtime/DateInstance.h: Renamed m_cache to m_data, to avoid the confusion
3273         of a "cache cache".
3274
3275         * runtime/DatePrototype.cpp:
3276         (JSC::formatLocaleDate):
3277         (JSC::dateProtoFuncToString):
3278         (JSC::dateProtoFuncToUTCString):
3279         (JSC::dateProtoFuncToISOString):
3280         (JSC::dateProtoFuncToDateString):
3281         (JSC::dateProtoFuncToTimeString):
3282         (JSC::dateProtoFuncGetFullYear):
3283         (JSC::dateProtoFuncGetUTCFullYear):
3284         (JSC::dateProtoFuncToGMTString):
3285         (JSC::dateProtoFuncGetMonth):
3286         (JSC::dateProtoFuncGetUTCMonth):
3287         (JSC::dateProtoFuncGetDate):
3288         (JSC::dateProtoFuncGetUTCDate):
3289         (JSC::dateProtoFuncGetDay):
3290         (JSC::dateProtoFuncGetUTCDay):
3291         (JSC::dateProtoFuncGetHours):
3292         (JSC::dateProtoFuncGetUTCHours):
3293         (JSC::dateProtoFuncGetMinutes):
3294         (JSC::dateProtoFuncGetUTCMinutes):
3295         (JSC::dateProtoFuncGetSeconds):
3296         (JSC::dateProtoFuncGetUTCSeconds):
3297         (JSC::dateProtoFuncGetTimezoneOffset):
3298         (JSC::setNewValueFromTimeArgs):
3299         (JSC::setNewValueFromDateArgs):
3300         (JSC::dateProtoFuncSetYear):
3301         (JSC::dateProtoFuncGetYear): Pass an ExecState to these functions, so they
3302         can access the DateInstanceCache.
3303
3304         * runtime/JSGlobalData.h: Keep a DateInstanceCache.
3305
3306 2009-10-27  James Robinson  <jamesr@chromium.org>
3307
3308         Reviewed by Darin Fisher.
3309
3310         Ensures that JavaScriptCore/wtf/CurrentTime.cpp is not built in PLATFORM(CHROMIUM) builds.
3311
3312         Chromium uses a different method to calculate the current time than is used in
3313         JavaScriptCore/wtf/CurrentTime.cpp. This can lead to time skew when calls to currentTime() and Chromium's time
3314         function are mixed.  In particular, timers can get scheduled in the past which leads to 100% CPU use.
3315         See http://code.google.com/p/chromium/issues/detail?id=25892 for an example.
3316
3317         https://bugs.webkit.org/show_bug.cgi?id=30833
3318
3319         * JavaScriptCore.gyp/JavaScriptCore.gyp:
3320         * wtf/CurrentTime.cpp:
3321
3322 2009-10-27  Peter Varga  <pvarga@inf.u-szeged.hu>
3323
3324         Rubber-stamped by Tor Arne Vestbø.
3325
3326         Fix typo in RegexInterpreter.cpp and RegexJIT.cpp alterantive to
3327         alternative.
3328
3329         * yarr/RegexInterpreter.cpp:
3330         (JSC::Yarr::ByteCompiler::alternativeBodyDisjunction):
3331         (JSC::Yarr::ByteCompiler::alternativeDisjunction):
3332         (JSC::Yarr::ByteCompiler::emitDisjunction):
3333         * yarr/RegexJIT.cpp:
3334         (JSC::Yarr::RegexGenerator::generateDisjunction):
3335
3336 2009-10-26  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
3337
3338         Reviewed by Darin Adler.
3339
3340         Make .rc files compile on Windows without depending on MFC headers
3341         https://bugs.webkit.org/show_bug.cgi?id=30750
3342
3343         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc: Use
3344         winresrc.h because it exists even when MFC is not installed, and is
3345         all that's needed here.
3346
3347 2009-10-26  Gabor Loki  <loki@inf.u-szeged.hu>
3348
3349         Reviewed by Gavin Barraclough.
3350
3351         The thunkReturnAddress is on JITStackFrame on ARM JIT as well
3352         https://bugs.webkit.org/show_bug.cgi?id=30782
3353
3354         Move the thunkReturnAddress from top of the stack into the JITStackFrame
3355         structure. This is a requirement for JSValue32_64 support on ARM.
3356
3357         * assembler/MacroAssemblerARM.h:
3358         (JSC::MacroAssemblerARM::ret): Return with link register
3359         (JSC::MacroAssemblerARM::prepareCall): Store the return address in link register
3360         * jit/JIT.h: Remove unused ctiReturnRegister
3361         * jit/JITInlineMethods.h: Same as ARMv7
3362         (JSC::JIT::restoreArgumentReference): Ditto.
3363         (JSC::JIT::restoreArgumentReferenceForTrampoline): Ditto.
3364         * jit/JITOpcodes.cpp: Remove ctiReturnRegister related instruction
3365         * jit/JITStubs.cpp: Store thunkReturnAddress on JITStackFrame. Use
3366         small trampoline functions which handle return addresses for each
3367         CTI_STUB_FUNCTION.
3368         * jit/JITStubs.h: Store thunkReturnAddress on JITStackFrame
3369         (JSC::JITStackFrame::returnAddressSlot): Return with the address of thunkReturnAddress
3370         * yarr/RegexJIT.cpp:
3371         (JSC::Yarr::RegexGenerator::generateEnter): Remove the unnecessary instruction
3372
3373 2009-10-26  Steve Block  <steveblock@google.com>
3374
3375         Reviewed by Darin Adler.
3376
3377         Adds ability to disable ReadWriteLock on platforms (eg Android) that use pthreads but do not support pthread_rwlock.
3378         https://bugs.webkit.org/show_bug.cgi?id=30713
3379
3380         * wtf/Platform.h: Modified. Defines HAVE_PTHREAD_RWLOCK for all platforms currently using pthreads.
3381         * wtf/Threading.h: Modified. Use pthread_rwlock_t only when HAVE_PTHREAD_RWLOCK is defined.
3382         * wtf/ThreadingPthreads.cpp: Modified. Build ReadWriteLock methods only when HAVE_PTHREAD_RWLOCK is defined.
3383
3384 2009-10-24  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
3385
3386         Reviewed by Holger Freyther.
3387
3388         [Qt] [Symbian] Set the capability and memory required to run QtWebKit for Symbian
3389         https://bugs.webkit.org/show_bug.cgi?id=30476
3390
3391         Assign ReadUserData WriteUserData NetworkServices Symbian capabilities
3392         to jsc.exe.
3393
3394         * jsc.pro:
3395
3396 2009-10-23  Steve Block  <steveblock@google.com>
3397
3398         Reviewed by Dmitry Titov.
3399
3400         Fixes a leak in createThreadInternal on Android.
3401         https://bugs.webkit.org/show_bug.cgi?id=30698
3402
3403         * wtf/ThreadingPthreads.cpp: Modified.
3404         (WTF::createThreadInternal): Avoid leaking a ThreadData object on failure.
3405
3406 2009-10-22  Geoffrey Garen  <ggaren@apple.com>
3407
3408         Reviewed by Alexey Proskuryakov.
3409
3410         Fixed ASSERT when opening Safari's Caches window while the Web Inspector
3411         is open.
3412
3413         * runtime/Collector.cpp:
3414         (JSC::typeName): Added two new types to the type name list in the Collector.
3415         These types have been around for a while, but nobody remembered to consider them here.
3416
3417         * runtime/JSCell.h:
3418         (JSC::JSCell::isPropertyNameIterator):
3419         * runtime/JSPropertyNameIterator.h:
3420         (JSC::JSPropertyNameIterator::isPropertyNameIterator): Give the Collector
3421         a way to tell if a cell is a JSPropertyNameIterator.
3422
3423 2009-10-22  Steve Falkenburg  <sfalken@apple.com>
3424
3425         Reviewed by Jon Honeycutt.
3426
3427         https://bugs.webkit.org/show_bug.cgi?id=30686
3428         Remove debug-specific def file.
3429         Only Debug_All target uses JavaScriptCore_debug.dll naming, and since
3430         that target is only used internally, maintaining two files just to
3431         suppress a single link warning isn't worthwhile.
3432
3433         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
3434         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Removed.
3435
3436 2009-10-21  Jon Honeycutt  <jhoneycutt@apple.com>
3437
3438         <rdar://problem/7270320> Screenshots of off-screen plug-ins are blank
3439         <rdar://problem/7270314> After halting a transparent PluginView on
3440         Windows, the transparency is applied twice
3441
3442         Reviewed by Dan Bernstein.
3443
3444         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3445         Export WTF::deleteOwnedPtr(HDC).
3446
3447         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
3448         Ditto.
3449
3450 2009-10-20  Geoffrey Garen  <ggaren@apple.com>
3451
3452         Windows build fix: updated variable name.
3453
3454         * runtime/DatePrototype.cpp:
3455         (JSC::formatLocaleDate):
3456
3457 2009-10-20  Geoffrey Garen  <ggaren@apple.com>
3458
3459         Reviewed by Mark Rowe.
3460
3461         * jit/JITOpcodes.cpp:
3462         (JSC::JIT::emit_op_next_pname): Slightly tweaked this #ifdef to match the
3463         size of a JSValue because m_jsStrings is an array of JSValues.
3464
3465 2009-10-20  Geoffrey Garen  <ggaren@apple.com>
3466
3467         Reviewed by Mark Rowe.
3468
3469         Fixed a 64-bit regression caused by the fix for
3470         https://bugs.webkit.org/show_bug.cgi?id=30570.
3471
3472         * jit/JITOpcodes.cpp:
3473         (JSC::JIT::emit_op_next_pname): Use TimesEight stepping on 64-bit, since
3474         64-bit pointers are eight bytes long.
3475
3476 2009-10-20  Geoffrey Garen  <ggaren@apple.com>
3477
3478         Reviewed by Sam Weinig.
3479
3480         Refactored DateInstance::msToGregorianDateTime so that a DateInstance's
3481         caller doesn't need to supply the DateInstance's own internal value to
3482         the DateInstance.
3483
3484         * runtime/DateInstance.cpp:
3485         (JSC::DateInstance::getGregorianDateTime): Renamed from "msToGregorianDateTime".
3486
3487         * runtime/DateInstance.h:
3488         * runtime/DatePrototype.cpp:
3489         (JSC::formatLocaleDate):
3490         (JSC::dateProtoFuncToString):
3491         (JSC::dateProtoFuncToUTCString):
3492         (JSC::dateProtoFuncToISOString):
3493         (JSC::dateProtoFuncToDateString):
3494         (JSC::dateProtoFuncToTimeString):
3495         (JSC::dateProtoFuncToLocaleString):
3496         (JSC::dateProtoFuncToLocaleDateString):
3497         (JSC::dateProtoFuncToLocaleTimeString):
3498         (JSC::dateProtoFuncGetTime):
3499         (JSC::dateProtoFuncGetFullYear):
3500         (JSC::dateProtoFuncGetUTCFullYear):
3501         (JSC::dateProtoFuncToGMTString):
3502         (JSC::dateProtoFuncGetMonth):
3503         (JSC::dateProtoFuncGetUTCMonth):
3504         (JSC::dateProtoFuncGetDate):
3505         (JSC::dateProtoFuncGetUTCDate):
3506         (JSC::dateProtoFuncGetDay):
3507         (JSC::dateProtoFuncGetUTCDay):
3508         (JSC::dateProtoFuncGetHours):
3509         (JSC::dateProtoFuncGetUTCHours):
3510         (JSC::dateProtoFuncGetMinutes):
3511         (JSC::dateProtoFuncGetUTCMinutes):
3512         (JSC::dateProtoFuncGetSeconds):
3513         (JSC::dateProtoFuncGetUTCSeconds):
3514         (JSC::dateProtoFuncGetTimezoneOffset):
3515         (JSC::setNewValueFromTimeArgs):
3516         (JSC::setNewValueFromDateArgs):
3517         (JSC::dateProtoFuncSetYear):
3518         (JSC::dateProtoFuncGetYear): Also renamed "utc" to "outputIsUTC", for clarity.
3519
3520 2009-10-20  Gabor Loki  <loki@inf.u-szeged.hu>
3521
3522         Reviewed by Geoffrey Garen.
3523
3524         The op_next_pname should use 4 bytes addressing mode in case of JSValue32
3525         https://bugs.webkit.org/show_bug.cgi?id=30570
3526
3527         * jit/JITOpcodes.cpp:
3528         (JSC::JIT::emit_op_next_pname):
3529
3530 2009-10-20  Gabor Loki  <loki@inf.u-szeged.hu>
3531
3532         Reviewed by Oliver Hunt.
3533
3534         Move OverridesMarkChildren flag from DatePrototype to its parent class
3535         https://bugs.webkit.org/show_bug.cgi?id=30372
3536
3537         * runtime/DateInstance.h:
3538         (JSC::DateInstance::createStructure):
3539         * runtime/DatePrototype.h:
3540
3541 2009-10-19  Geoffrey Garen  <ggaren@apple.com>
3542
3543         Reviewed by Oliver Hunt.
3544
3545         Tightened up some put_by_id_transition code generation.
3546         https://bugs.webkit.org/show_bug.cgi?id=30539
3547
3548         * jit/JIT.h:
3549         * jit/JITPropertyAccess.cpp:
3550         (JSC::JIT::testPrototype):
3551         (JSC::JIT::privateCompilePutByIdTransition): No need to do object type
3552         checks or read Structures and prototypes from objects: they're all known
3553         constants at compile time.
3554
3555 2009-10-19  Geoffrey Garen  <ggaren@apple.com>
3556
3557         Reviewed by Sam Weinig.
3558
3559         Added a private API for getting a global context from a context, for
3560         clients who want to preserve a context for a later callback.
3561
3562         * API/APICast.h:
3563         (toGlobalRef): Added an ASSERT, since this function is used more often
3564         than before.
3565
3566         * API/JSContextRef.cpp:
3567         * API/JSContextRefPrivate.h: Added. The new API.
3568
3569         * API/tests/testapi.c:
3570         (print_callAsFunction):
3571         (main): Test the new API.
3572
3573         * JavaScriptCore.exp:
3574         * JavaScriptCore.xcodeproj/project.pbxproj: Build and export the new API.
3575
3576 2009-10-17  Geoffrey Garen  <ggaren@apple.com>
3577
3578         Reviewed by Oliver Hunt.
3579         
3580         Tightened up some instanceof code generation.
3581         https://bugs.webkit.org/show_bug.cgi?id=30488
3582
3583         * jit/JITOpcodes.cpp:
3584         (JSC::JIT::emit_op_instanceof):
3585         (JSC::JIT::emitSlow_op_instanceof): No need to do object type checks - 
3586         cell type checks and ImplementsDefaultHasIntance checks implicitly
3587         supersede object type checks.
3588