3f39e6b90638e4d9cc6a46d559b6e6f2bea26a68
[WebKit-https.git] / JavaScriptCore / ChangeLog
1 2009-11-13  Oliver Hunt  <oliver@apple.com>
2
3         Reviewed by Geoff Garen.
4
5         JSValueProtect and JSValueUnprotect don't protect API wrapper values
6         https://bugs.webkit.org/show_bug.cgi?id=31485
7
8         Make JSValueProtect/Unprotect use a new 'toJS' function, 'toJSForGC' that
9         does not attempt to to strip out API wrapper objects.
10
11         * API/APICast.h:
12         (toJSForGC):
13         * API/JSValueRef.cpp:
14         (JSValueProtect):
15         (JSValueUnprotect):
16         * API/tests/testapi.c:
17         (makeGlobalNumberValue):
18         (main):
19
20 2009-11-13  İsmail Dönmez  <ismail@namtrac.org>
21
22         Reviewed by Antti Koivisto.
23
24         Fix typo, ce_time.cpp should be ce_time.c
25
26         * JavaScriptCore.pri:
27
28 2009-11-12  Steve VanDeBogart  <vandebo@chromium.org>
29
30         Reviewed by Adam Barth.
31
32         Calculate the time offset only if we were able to parse
33         the date string. This saves an IPC in Chromium for
34         invalid date strings.
35         https://bugs.webkit.org/show_bug.cgi?id=31416
36
37         * wtf/DateMath.cpp:
38         (WTF::parseDateFromNullTerminatedCharacters):
39         (JSC::parseDateFromNullTerminatedCharacters):
40
41 2009-11-12  Oliver Hunt  <oliver@apple.com>
42
43         Rollout r50896 until i can work out why it causes failures.
44
45         * bytecompiler/BytecodeGenerator.cpp:
46         (JSC::BytecodeGenerator::emitReturn):
47         * interpreter/Interpreter.cpp:
48         (JSC::Interpreter::execute):
49         * parser/Nodes.cpp:
50         (JSC::EvalNode::emitBytecode):
51
52 2009-11-12  Steve Falkenburg  <sfalken@apple.com>
53
54         Reviewed by Stephanie Lewis.
55
56         Remove LIBRARY directive from def file to fix Debug_All target.
57
58         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
59
60 2009-11-12  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
61
62         Rubber-stamped by Holger Freyther.
63
64         Revert r50204, since it makes DRT crash on 32 bits release builds
65         for GTK+.
66
67         * wtf/FastMalloc.h:
68
69 2009-11-12  Oliver Hunt  <oliver@apple.com>
70
71         Reviewed by Gavin Barraclough.
72
73         Start unifying entry logic for function and eval code.
74
75         Eval now uses a ret instruction to end execution, and sets up
76         a callframe more in line with what we do for function entry.
77
78         * bytecompiler/BytecodeGenerator.cpp:
79         (JSC::BytecodeGenerator::emitReturn):
80         * interpreter/Interpreter.cpp:
81         (JSC::Interpreter::execute):
82         * parser/Nodes.cpp:
83         (JSC::EvalNode::emitBytecode):
84
85 2009-11-12  Richard Moe Gustavsen  <richard.gustavsen@nokia.com>
86
87         Reviewed by Kenneth Rohde Christiansen.
88
89         [Qt] Disable pthread_setname_np.
90
91         This allows Qt builds on Mac from 10.6 to run on earlier version
92         where this symbol is not present.
93         https://bugs.webkit.org/show_bug.cgi?id=31403
94
95         * wtf/Platform.h:
96
97 2009-11-12  Thiago Macieira <thiago.macieira@nokia.com>
98
99         Reviewed by Kenneth Rohde Christiansen.
100
101         [Qt] Fix linking on Linux 32-bit.
102
103         It was missing the ".text" directive at the top of the file,
104         indicating that code would follow. Without it, the assembler created
105         "NOTYPE" symbols, which would result in linker errors.
106         https://bugs.webkit.org/show_bug.cgi?id=30863
107
108         * jit/JITStubs.cpp:
109
110 2009-11-11  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
111
112         Reviewed by Alexey Proskuryakov.
113
114         Refactor multiple JavaScriptCore threads
115         https://bugs.webkit.org/show_bug.cgi?id=31328
116
117         Remove the id field from the PlatformThread structure 
118         as it is not used.
119
120         * runtime/Collector.cpp:
121         (JSC::getCurrentPlatformThread):
122         (JSC::suspendThread):
123         (JSC::resumeThread):
124         (JSC::getPlatformThreadRegisters):
125
126 2009-11-10  Geoffrey Garen  <ggaren@apple.com>
127
128         Linux build fix: Added an #include for UINT_MAX.
129
130         * runtime/WeakRandom.h:
131
132 2009-11-10  Geoffrey Garen  <ggaren@apple.com>
133
134         JavaScriptGlue build fix: Marked a file 'private' instead of 'project'.
135
136         * JavaScriptCore.xcodeproj/project.pbxproj:
137
138 2009-11-10  Geoffrey Garen  <ggaren@apple.com>
139
140         Reviewed by Gavin "avGni arBalroguch" Barraclough.
141
142         Faster Math.random, based on GameRand.
143         
144         SunSpider says 1.4% faster.
145
146         * GNUmakefile.am:
147         * JavaScriptCore.gypi:
148         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
149         * JavaScriptCore.xcodeproj/project.pbxproj: Added the header to the project.
150
151         * runtime/JSGlobalData.cpp:
152         (JSC::JSGlobalData::JSGlobalData):
153         * runtime/JSGlobalData.h: Use an object to track random number generation
154         state, initialized to the current time.
155
156         * runtime/MathObject.cpp:
157         (JSC::MathObject::MathObject):
158         (JSC::mathProtoFuncRandom): Use the new hotness.
159
160         * runtime/WeakRandom.h: Added.
161         (JSC::WeakRandom::WeakRandom):
162         (JSC::WeakRandom::get):
163         (JSC::WeakRandom::advance): The new hotness.
164
165 2009-11-09  Geoffrey Garen  <ggaren@apple.com>
166
167         Reviewed by Oliver Hunt.
168
169         Imported the v8 DST cache.
170         
171         SunSpider says 1.5% faster.
172
173         * runtime/JSGlobalData.cpp:
174         (JSC::JSGlobalData::resetDateCache): Reset the DST cache when resetting
175         other date data.
176
177         * runtime/JSGlobalData.h:
178         (JSC::DSTOffsetCache::DSTOffsetCache):
179         (JSC::DSTOffsetCache::reset): Added a struct for the DST cache.
180
181         * wtf/DateMath.cpp:
182         (WTF::calculateDSTOffsetSimple):
183         (WTF::calculateDSTOffset):
184         (WTF::parseDateFromNullTerminatedCharacters):
185         (JSC::getDSTOffset):
186         (JSC::gregorianDateTimeToMS):
187         (JSC::msToGregorianDateTime):
188         (JSC::parseDateFromNullTerminatedCharacters):
189         * wtf/DateMath.h: The imported code for probing and updating the cache.
190
191 2009-11-09  Geoffrey Garen  <ggaren@apple.com>
192
193         Reviewed by Oliver Hunt.
194
195         Fixed an edge case that could cause the engine not to notice a timezone
196         change.
197         
198         No test because this case would require manual intervention to change
199         the timezone during the test.
200         
201         SunSpider reports no change.
202
203         * runtime/DateInstanceCache.h:
204         (JSC::DateInstanceCache::DateInstanceCache):
205         (JSC::DateInstanceCache::reset): Added a helper function for resetting
206         this cache. Also, shrank the cache, since we'll be resetting it often.
207
208         * runtime/JSGlobalData.cpp:
209         (JSC::JSGlobalData::resetDateCache): Include resetting the DateInstanceCache
210         in resetting Date data. (Otherwise, a cache hit could bypass a necessary
211         timezone update check.)
212
213 2009-11-09  Geoffrey Garen  <ggaren@apple.com>
214
215         Reviewed by Sam Weinig.
216
217         Some manual inlining and constant propogation in Date code.
218         
219         SunSpider reports a 0.4% speedup on date-*, no overall speedup. Shark
220         says some previously evident stalls are now gone.
221
222         * runtime/DateConstructor.cpp:
223         (JSC::callDate):
224         * runtime/DateConversion.cpp:
225         (JSC::formatTime):
226         (JSC::formatTimeUTC): Split formatTime into UTC and non-UTC variants.
227
228         * runtime/DateConversion.h:
229         * runtime/DateInstance.cpp:
230         (JSC::DateInstance::calculateGregorianDateTime):
231         (JSC::DateInstance::calculateGregorianDateTimeUTC):
232         * runtime/DateInstance.h:
233         (JSC::DateInstance::gregorianDateTime):
234         (JSC::DateInstance::gregorianDateTimeUTC): Split gregorianDateTime into
235         a UTC and non-UTC variant, and split each variant into a fast inline
236         case and a slow out-of-line case.
237
238         * runtime/DatePrototype.cpp:
239         (JSC::formatLocaleDate):
240         (JSC::dateProtoFuncToString):
241         (JSC::dateProtoFuncToUTCString):
242         (JSC::dateProtoFuncToISOString):
243         (JSC::dateProtoFuncToDateString):
244         (JSC::dateProtoFuncToTimeString):
245         (JSC::dateProtoFuncGetFullYear):
246         (JSC::dateProtoFuncGetUTCFullYear):
247         (JSC::dateProtoFuncToGMTString):
248         (JSC::dateProtoFuncGetMonth):
249         (JSC::dateProtoFuncGetUTCMonth):
250         (JSC::dateProtoFuncGetDate):
251         (JSC::dateProtoFuncGetUTCDate):
252         (JSC::dateProtoFuncGetDay):
253         (JSC::dateProtoFuncGetUTCDay):
254         (JSC::dateProtoFuncGetHours):
255         (JSC::dateProtoFuncGetUTCHours):
256         (JSC::dateProtoFuncGetMinutes):
257         (JSC::dateProtoFuncGetUTCMinutes):
258         (JSC::dateProtoFuncGetSeconds):
259         (JSC::dateProtoFuncGetUTCSeconds):
260         (JSC::dateProtoFuncGetTimezoneOffset):
261         (JSC::setNewValueFromTimeArgs):
262         (JSC::setNewValueFromDateArgs):
263         (JSC::dateProtoFuncSetYear):
264         (JSC::dateProtoFuncGetYear): Updated for the gregorianDateTime change above.
265
266 2009-11-09  Geoffrey Garen  <ggaren@apple.com>
267
268         Build fix: export a new symbol.
269
270         * JavaScriptCore.exp:
271         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
272
273 2009-11-09  Geoffrey Garen  <ggaren@apple.com>
274
275         Reviewed by Sam "Home Wrecker" Weinig.
276
277         Added a tiny cache for Date parsing.
278         
279         SunSpider says 1.2% faster.
280
281         * runtime/DateConversion.cpp:
282         (JSC::parseDate): Try to reuse the last parsed Date, if present.
283
284         * runtime/JSGlobalData.cpp:
285         (JSC::JSGlobalData::resetDateCache):
286         * runtime/JSGlobalData.h: Added storage for last parsed Date. Refactored
287         this code to make resetting the date cache easier.
288
289         * runtime/JSGlobalObject.h:
290         (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): Updated for
291         refactoring.
292
293         * wtf/DateMath.cpp:
294         (JSC::parseDateFromNullTerminatedCharacters):
295         * wtf/DateMath.h: Changed ExecState to be first parameter, as is the JSC custom.
296
297 2009-11-09  Oliver Hunt  <oliver@apple.com>
298
299         Reviewed by Gavin Barraclough.
300
301         Can cache prototype lookups on uncacheable dictionaries.
302         https://bugs.webkit.org/show_bug.cgi?id=31198
303
304         Replace fromDictionaryTransition with flattenDictionaryObject and
305         flattenDictionaryStructure.  This change is necessary as we need to
306         guarantee that our attempt to convert away from a dictionary structure
307         will definitely succeed, and in some cases this requires mutating the
308         object storage itself.
309
310         * interpreter/Interpreter.cpp:
311         (JSC::Interpreter::tryCacheGetByID):
312         * jit/JITStubs.cpp:
313         (JSC::JITThunks::tryCacheGetByID):
314         (JSC::DEFINE_STUB_FUNCTION):
315         * runtime/BatchedTransitionOptimizer.h:
316         (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer):
317         * runtime/JSObject.h:
318         (JSC::JSObject::flattenDictionaryObject):
319         * runtime/Operations.h:
320         (JSC::normalizePrototypeChain):
321         * runtime/Structure.cpp:
322         (JSC::Structure::flattenDictionaryStructure):
323         (JSC::comparePropertyMapEntryIndices):
324         * runtime/Structure.h:
325
326 2009-11-09  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
327
328         Not reviewed, build fix.
329
330         Remove extra character from r50701.
331
332         * JavaScriptCore.pri:
333
334 2009-11-09  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
335
336         Not reviewed, build fix.
337
338         Revert r50695 because it broke QtWebKit (clean builds).
339
340         * JavaScriptCore.pri:
341
342 2009-11-09  Norbert Leser  <norbert.leser@nokia.com>
343
344         Reviewed by Kenneth Rohde Christiansen.
345
346         Prepended $$PWD to GENERATED_SOURCES_DIR to avoid potential ambiguities when included from WebCore.pro.
347         Some preprocessors consider this GENERATED_SOURCES_DIR relative to current invoking dir (e.g., ./WebCore),
348         and not the working dir of JavaCriptCore.pri (i.e., ../JavaScriptCore/).
349
350         * JavaScriptCore.pri:
351
352 2009-11-09  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
353
354         Reviewed by Kenneth Rohde Christiansen.
355
356         Use explicit parentheses to silence gcc 4.4 -Wparentheses warnings
357         https://bugs.webkit.org/show_bug.cgi?id=31040
358
359         * interpreter/Interpreter.cpp:
360         (JSC::Interpreter::privateExecute):
361
362 2009-11-08  David Levin  <levin@chromium.org>
363
364         Reviewed by NOBODY (speculative snow leopard and windows build fixes).
365
366         * wtf/DateMath.cpp:
367         (WTF::parseDateFromNullTerminatedCharacters):
368         (JSC::gregorianDateTimeToMS):
369         (JSC::msToGregorianDateTime):
370         (JSC::parseDateFromNullTerminatedCharacters):
371         * wtf/DateMath.h:
372         (JSC::GregorianDateTime::GregorianDateTime):
373
374 2009-11-08  David Levin  <levin@chromium.org>
375
376         Reviewed by NOBODY (chromium build fix).
377         
378         Hopefully, the last build fix.
379
380         Create better separation in DateMath about the JSC
381         and non-JSC portions. Also, only expose the non-JSC
382         version in the exports.
383
384         * JavaScriptCore.exp:
385         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
386         * wtf/DateMath.cpp:
387         (WTF::parseDateFromNullTerminatedCharacters):
388         (JSC::getUTCOffset):
389         (JSC::gregorianDateTimeToMS):
390         (JSC::msToGregorianDateTime):
391         (JSC::parseDateFromNullTerminatedCharacters):
392         * wtf/DateMath.h:
393         (JSC::gmtoffset):
394
395 2009-11-08  David Levin  <levin@chromium.org>
396
397         Reviewed by NOBODY (chromium build fix).
398
399         For the change in DateMath.
400
401         * config.h:
402         * wtf/DateMath.cpp:
403
404 2009-11-06  Geoffrey Garen  <ggaren@apple.com>
405
406         Windows build fix: export some symbols.
407
408         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
409
410 2009-11-06  Geoffrey Garen  <ggaren@apple.com>
411
412         Build fix: updated export file.
413
414         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
415
416 2009-11-06  Geoffrey Garen  <ggaren@apple.com>
417
418         Build fix: added some #includes.
419
420         * wtf/CurrentTime.h:
421         * wtf/DateMath.h:
422
423 2009-11-06  Geoffrey Garen  <ggaren@apple.com>
424
425         Reviewed by Oliver Hunt.
426         
427         https://bugs.webkit.org/show_bug.cgi?id=31197
428         Implemented a timezone cache not based on Mac OS X's notify_check API.
429         
430         If the VM calculates the local timezone offset from UTC, it caches the
431         result until the end of the current VM invocation. (We don't want to cache
432         forever, because the user's timezone may change over time.)
433         
434         This removes notify_* overhead on Mac, and, more significantly, removes
435         OS time and date call overhead on non-Mac platforms.
436
437         ~8% speedup on Date microbenchmark on Mac. SunSpider reports maybe a tiny
438         speedup on Mac. (Speedup on non-Mac platforms should be even more noticeable.)
439
440         * JavaScriptCore.exp:
441
442         * interpreter/CachedCall.h:
443         (JSC::CachedCall::CachedCall):
444         * interpreter/Interpreter.cpp:
445         (JSC::Interpreter::execute):
446         * runtime/JSGlobalObject.h:
447         (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): Made the 
448         DynamicGlobalObjectScope constructor responsible for checking whether a
449         dynamicGlobalObject has already been set. This eliminated some duplicate
450         client code, and allowed me to avoid adding even more duplicate client
451         code. Made DynamicGlobalObjectScope responsible for resetting the
452         local timezone cache upon first entry to the VM.
453
454         * runtime/DateConstructor.cpp:
455         (JSC::constructDate):
456         (JSC::callDate):
457         (JSC::dateParse):
458         (JSC::dateUTC):
459         * runtime/DateConversion.cpp:
460         (JSC::parseDate):
461         * runtime/DateConversion.h:
462         * runtime/DateInstance.cpp:
463         (JSC::DateInstance::gregorianDateTime):
464         * runtime/DateInstance.h:
465         * runtime/DateInstanceCache.h:
466         * runtime/DatePrototype.cpp:
467         (JSC::setNewValueFromTimeArgs):
468         (JSC::setNewValueFromDateArgs):
469         (JSC::dateProtoFuncSetYear):
470         * runtime/InitializeThreading.cpp:
471         (JSC::initializeThreadingOnce):
472         * runtime/JSGlobalData.cpp:
473         (JSC::JSGlobalData::JSGlobalData):
474         * runtime/JSGlobalData.h:
475         * wtf/DateMath.cpp:
476         (WTF::getCurrentUTCTime):
477         (WTF::getCurrentUTCTimeWithMicroseconds):
478         (WTF::getLocalTime):
479         (JSC::getUTCOffset): Use the new cache. Also, see below.
480         (JSC::gregorianDateTimeToMS):
481         (JSC::msToGregorianDateTime):
482         (JSC::initializeDates):
483         (JSC::parseDateFromNullTerminatedCharacters): Simplified the way this function
484         accounts for the local timezone offset, to accomodate our new caching API,
485         and a (possibly misguided) caller in WebCore. Also, see below.
486         * wtf/DateMath.h:
487         (JSC::GregorianDateTime::GregorianDateTime): Moved most of the code in
488         DateMath.* into the JSC namespace. The code needed to move so it could
489         naturally interact with ExecState and JSGlobalData to support caching.
490         Logically, it seemed right to move it, too, since this code is not really
491         as low-level as the WTF namespace might imply -- it implements a set of
492         date parsing and conversion quirks that are finely tuned to the JavaScript
493         language. Also removed the Mac OS X notify_* infrastructure.
494         
495         * wtf/CurrentTime.h:
496         (WTF::currentTimeMS):
497         (WTF::getLocalTime): Moved the rest of the DateMath code here, and renamed
498         it to make it consistent with WTF's currentTime function.
499
500 2009-11-06  Gabor Loki  <loki@inf.u-szeged.hu>
501
502         Unreviewed trivial buildfix after r50595.
503
504         Rename the remaining rshiftPtr calls to rshift32
505
506         * jit/JITArithmetic.cpp:
507         (JSC::JIT::emit_op_rshift):
508         * jit/JITInlineMethods.h:
509         (JSC::JIT::emitFastArithImmToInt):
510
511 2009-11-06  Gavin Barraclough  <barraclough@apple.com>
512
513         Reviewed by Oliver Hunt.
514
515         Tidy up the shift methods on the macro-assembler interface.
516
517         Currently behaviour of shifts of a magnitude > 0x1f is undefined.
518         Instead defined that all shifts are masked to this range.  This makes a lot of
519         practical sense, both since having undefined behaviour is not particularly
520         desirable, and because this behaviour is commonly required (particularly since
521         it is required bt ECMA-262 for shifts).
522
523         Update the ARM assemblers to provide this behaviour.  Remove (now) redundant
524         masks from JITArithmetic, and remove rshiftPtr (this was used in case that
525         could be rewritten in a simpler form using rshift32, only optimized JSVALUE32
526         on x86-64, which uses JSVALUE64!)
527
528         * assembler/MacroAssembler.h:
529         * assembler/MacroAssemblerARM.h:
530         (JSC::MacroAssemblerARM::lshift32):
531         (JSC::MacroAssemblerARM::rshift32):
532         * assembler/MacroAssemblerARMv7.h:
533         (JSC::MacroAssemblerARMv7::lshift32):
534         (JSC::MacroAssemblerARMv7::rshift32):
535         * assembler/MacroAssemblerX86_64.h:
536         * jit/JITArithmetic.cpp:
537         (JSC::JIT::emit_op_lshift):
538         (JSC::JIT::emit_op_rshift):
539
540 2009-11-05  Gavin Barraclough  <barraclough@apple.com>
541
542         Rubber Stamped by Oliver Hunt.
543
544         Remove a magic number (1) from the JIT, instead compute the value with OBJECT_OFFSET.
545
546         * jit/JITInlineMethods.h:
547         (JSC::JIT::emitPutJITStubArg):
548         (JSC::JIT::emitPutJITStubArgConstant):
549         (JSC::JIT::emitGetJITStubArg):
550         (JSC::JIT::emitPutJITStubArgFromVirtualRegister):
551         * jit/JITStubCall.h:
552         (JSC::JITStubCall::JITStubCall):
553         (JSC::JITStubCall::getArgument):
554         * jit/JITStubs.h:
555
556 2009-11-05  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
557
558         Reviewed by Gavin Barraclough.
559
560         https://bugs.webkit.org/show_bug.cgi?id=31159
561         Fix branchDouble behaviour on ARM THUMB2 JIT.
562
563         The x86 branchDouble behaviour is reworked, and all JIT
564         ports should follow the x86 port. See bug 31104 and 31151
565
566         This patch contains a fix for the traditional ARM port
567
568         * assembler/ARMAssembler.h:
569         (JSC::ARMAssembler::):
570         (JSC::ARMAssembler::fmrs_r):
571         (JSC::ARMAssembler::ftosid_r):
572         * assembler/MacroAssemblerARM.h:
573         (JSC::MacroAssemblerARM::):
574         (JSC::MacroAssemblerARM::branchDouble):
575         (JSC::MacroAssemblerARM::branchConvertDoubleToInt32):
576
577 2009-11-05  Chris Jerdonek  <chris.jerdonek@gmail.com>
578
579         Reviewed by Eric Seidel.
580
581         Removed the "this is part of the KDE project" comments from 
582         all *.h, *.cpp, *.idl, and *.pm files.
583         
584         https://bugs.webkit.org/show_bug.cgi?id=31167
585         
586         The maintenance and architecture page in the project wiki lists
587         this as a task.
588         
589         This change includes no changes or additions to test cases 
590         since the change affects only comments.
591         
592         * wtf/wince/FastMallocWince.h:
593
594 2009-11-05  Gabor Loki  <loki@inf.u-szeged.hu>
595
596         Reviewed by Gavin Barraclough.
597
598         Use ARMv7 specific encoding for immediate constants on ARMv7 target
599         https://bugs.webkit.org/show_bug.cgi?id=31060
600
601         * assembler/ARMAssembler.cpp:
602         (JSC::ARMAssembler::getOp2): Use INVALID_IMM
603         (JSC::ARMAssembler::getImm): Use encodeComplexImm for complex immediate
604         (JSC::ARMAssembler::moveImm): Ditto.
605         (JSC::ARMAssembler::encodeComplexImm): Encode a constant by one or two
606         instructions or a PC relative load.
607         * assembler/ARMAssembler.h: Use INVALID_IMM if a constant cannot be
608         encoded as an immediate constant.
609         (JSC::ARMAssembler::):
610         (JSC::ARMAssembler::movw_r): 16-bit immediate load
611         (JSC::ARMAssembler::movt_r): High halfword 16-bit immediate load
612         (JSC::ARMAssembler::getImm16Op2): Encode immediate constant for
613         movw_r and mowt_r
614
615 2009-11-04  Mark Mentovai  <mark@chromium.org>
616
617         Reviewed by Mark Rowe.
618
619         Provide TARGETING_TIGER and TARGETING_LEOPARD as analogues to
620         BUILDING_ON_TIGER and BUILDING_ON_LEOPARD.  The TARGETING_ macros
621         consider the deployment target; the BUILDING_ON_ macros consider the
622         headers being built against.
623
624         * wtf/Platform.h:
625
626 2009-11-04  Gavin Barraclough  <barraclough@apple.com>
627
628         Reviewed by Oliver Hunt.
629
630         https://bugs.webkit.org/show_bug.cgi?id=31151
631         Fix branchDouble behaviour on ARM THUMB2 JIT.
632
633         The ARMv7 JIT is currently using ARMv7Assembler::ConditionEQ to branch
634         for DoubleEqualOrUnordered, however this is incorrect – ConditionEQ won't
635         branch on unordered operands.  Similarly, DoubleLessThanOrUnordered &
636         DoubleLessThanOrEqualOrUnordered use ARMv7Assembler::ConditionLO &
637         ARMv7Assembler::ConditionLS, whereas they should be using
638         ARMv7Assembler::ConditionLT & ARMv7Assembler::ConditionLE.
639
640         Fix these, and fill out the missing DoubleConditions.
641
642         * assembler/MacroAssemblerARMv7.h:
643         (JSC::MacroAssemblerARMv7::):
644         (JSC::MacroAssemblerARMv7::branchDouble):
645
646 2009-11-04  Gavin Barraclough  <barraclough@apple.com>
647
648         Rubber Stamped by Oliver Hunt.
649
650         Enable native call optimizations on ARMv7.  (Existing ARM_TRADITIONAL
651         implementation was generic, worked perfectly, just needed turning on).
652
653         * jit/JITOpcodes.cpp:
654         * wtf/Platform.h:
655
656 2009-11-04  Gavin Barraclough  <barraclough@apple.com>
657
658         Rubber Stamped by Mark Rowe, Oliver Hunt, and Sam Weinig.
659
660         Add a missing assert to the ARMv7 JIT.
661
662         * assembler/ARMv7Assembler.h:
663         (JSC::ARMThumbImmediate::ARMThumbImmediate):
664
665 2009-11-04  Mark Rowe  <mrowe@apple.com>
666
667         Rubber-stamped by Oliver Hunt.
668
669         Remove bogus op_ prefix on dumped version of three opcodes.
670
671         * bytecode/CodeBlock.cpp:
672         (JSC::CodeBlock::dump):
673
674 2009-11-04  Mark Rowe  <mrowe@apple.com>
675
676         Reviewed by Sam Weinig.
677
678         Fix dumping of constants in bytecode so that they aren't printed as large positive register numbers.
679
680         We do this by having the registerName function return information about the constant if the register
681         number corresponds to a constant.  This requires that registerName, and several functions that call it,
682         be converted to member functions of CodeBlock so that the constant value can be retrieved.  The
683         ExecState also needs to be threaded down through these functions so that it can be passed on to
684         constantName when needed.
685
686         * bytecode/CodeBlock.cpp:
687         (JSC::constantName):
688         (JSC::CodeBlock::registerName):
689         (JSC::CodeBlock::printUnaryOp):
690         (JSC::CodeBlock::printBinaryOp):
691         (JSC::CodeBlock::printConditionalJump):
692         (JSC::CodeBlock::printGetByIdOp):
693         (JSC::CodeBlock::printPutByIdOp):
694         (JSC::CodeBlock::dump):
695         * bytecode/CodeBlock.h:
696         (JSC::CodeBlock::isConstantRegisterIndex):
697
698 2009-11-04  Pavel Heimlich  <tropikhajma@gmail.com>
699
700         Reviewed by Alexey Proskuryakov.
701
702         https://bugs.webkit.org/show_bug.cgi?id=30647
703         Solaris build failure due to strnstr.
704
705         * wtf/StringExtras.h: Enable strnstr on Solaris, too.
706
707 2009-11-04  Gavin Barraclough  <barraclough@apple.com>
708
709         Reviewed by Oliver Hunt.
710
711         https://bugs.webkit.org/show_bug.cgi?id=31104
712         Refactor x86-specific behaviour out of the JIT.
713
714         - Add explicit double branch conditions for ordered and unordered comparisons (presently the brehaviour is a mix).
715         - Refactor double to int conversion out into the MacroAssembler.
716         - 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.
717         - 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.
718
719         * assembler/MacroAssemblerARM.h:
720         (JSC::MacroAssemblerARM::):
721         * assembler/MacroAssemblerARMv7.h:
722         (JSC::MacroAssemblerARMv7::):
723         * assembler/MacroAssemblerX86Common.h:
724         (JSC::MacroAssemblerX86Common::):
725         (JSC::MacroAssemblerX86Common::convertInt32ToDouble):
726         (JSC::MacroAssemblerX86Common::branchDouble):
727         (JSC::MacroAssemblerX86Common::branchConvertDoubleToInt32):
728         * jit/JITArithmetic.cpp:
729         (JSC::JIT::emitBinaryDoubleOp):
730         (JSC::JIT::emit_op_div):
731         (JSC::JIT::emitSlow_op_jnless):
732         (JSC::JIT::emitSlow_op_jnlesseq):
733         * jit/JITOpcodes.cpp:
734         (JSC::JIT::emit_op_jfalse):
735
736 2009-11-04  Mark Mentovai  <mark@chromium.org>
737
738         Reviewed by Eric Seidel.
739
740         Remove BUILDING_ON_LEOPARD from JavaScriptCore.gyp.  This is supposed
741         to be set as needed only in wtf/Platform.h.
742
743         * JavaScriptCore.gyp/JavaScriptCore.gyp:
744
745 2009-11-02  Oliver Hunt  <oliver@apple.com>
746
747         Reviewed by Gavin Barraclough.
748
749         REGRESSION (r48573): JSC may incorrectly cache chain lookups with a dictionary at the head of the chain
750         https://bugs.webkit.org/show_bug.cgi?id=31045
751
752         Add guards to prevent caching of prototype chain lookups with dictionaries at the
753         head of the chain.  Also add a few tighter assertions to cached prototype lookups
754         to catch this in future.
755
756         * interpreter/Interpreter.cpp:
757         (JSC::Interpreter::tryCacheGetByID):
758         (JSC::Interpreter::privateExecute):
759         * jit/JITStubs.cpp:
760         (JSC::JITThunks::tryCacheGetByID):
761
762 2009-11-02  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
763
764         Reviewed by Darin Adler.
765
766         PLATFORM(CF) should be set when building for Qt on Darwin
767         https://bugs.webkit.org/show_bug.cgi?id=23671
768
769         * wtf/Platform.h: Turn on CF support if both QT and DARWIN
770         platforms are defined.
771
772 2009-11-02  Dmitry Titov  <dimich@chromium.org>
773
774         Reviewed by David Levin.
775
776         Remove threadsafe refcounting from tasks used with WTF::MessageQueue.
777         https://bugs.webkit.org/show_bug.cgi?id=30612
778
779         * wtf/MessageQueue.h:
780         (WTF::MessageQueue::alwaysTruePredicate):
781         (WTF::MessageQueue::~MessageQueue):
782         (WTF::MessageQueue::append):
783         (WTF::MessageQueue::appendAndCheckEmpty):
784         (WTF::MessageQueue::prepend):
785         (WTF::MessageQueue::waitForMessage):
786         (WTF::MessageQueue::waitForMessageFilteredWithTimeout):
787         (WTF::MessageQueue::tryGetMessage):
788         (WTF::MessageQueue::removeIf):
789         The MessageQueue is changed to act as a queue of OwnPtr<DataType>. It takes ownership
790         of posted tasks and passes it to the new owner (in another thread) when the task is fetched.
791         All methods have arguments of type PassOwnPtr<DataType> and return the same type.
792
793         * wtf/Threading.cpp:
794         (WTF::createThread):
795         Superficial change to trigger rebuild of JSC project on Windows,
796         workaround for https://bugs.webkit.org/show_bug.cgi?id=30890
797
798 2009-10-30  Geoffrey Garen  <ggaren@apple.com>
799
800         Reviewed by Oliver Hunt.
801
802         Fixed failing layout test: restore a special case I accidentally deleted.
803
804         * runtime/DatePrototype.cpp:
805         (JSC::setNewValueFromDateArgs): In the case of applying a change to a date
806         that is NaN, reset the date to 0 *and* then apply the change; don't just
807         reset the date to 0.
808
809 2009-10-30  Geoffrey Garen  <ggaren@apple.com>
810
811         Windows build fix: update for object-to-pointer change.
812
813         * runtime/DatePrototype.cpp:
814         (JSC::formatLocaleDate):
815
816 2009-10-29  Geoffrey Garen  <ggaren@apple.com>
817
818         Reviewed by Darin Adler.
819
820         https://bugs.webkit.org/show_bug.cgi?id=30942
821         Use pointers instead of copies to pass GregorianDateTime objects around.
822         
823         SunSpider reports a shocking 4.5% speedup on date-format-xparb, and 1.3%
824         speedup on date-format-tofte.
825
826         * runtime/DateInstance.cpp:
827         (JSC::DateInstance::gregorianDateTime):
828         * runtime/DateInstance.h:
829         * runtime/DatePrototype.cpp:
830         (JSC::formatLocaleDate):
831         (JSC::dateProtoFuncToString):
832         (JSC::dateProtoFuncToUTCString):
833         (JSC::dateProtoFuncToISOString):
834         (JSC::dateProtoFuncToDateString):
835         (JSC::dateProtoFuncToTimeString):
836         (JSC::dateProtoFuncGetFullYear):
837         (JSC::dateProtoFuncGetUTCFullYear):
838         (JSC::dateProtoFuncToGMTString):
839         (JSC::dateProtoFuncGetMonth):
840         (JSC::dateProtoFuncGetUTCMonth):
841         (JSC::dateProtoFuncGetDate):
842         (JSC::dateProtoFuncGetUTCDate):
843         (JSC::dateProtoFuncGetDay):
844         (JSC::dateProtoFuncGetUTCDay):
845         (JSC::dateProtoFuncGetHours):
846         (JSC::dateProtoFuncGetUTCHours):
847         (JSC::dateProtoFuncGetMinutes):
848         (JSC::dateProtoFuncGetUTCMinutes):
849         (JSC::dateProtoFuncGetSeconds):
850         (JSC::dateProtoFuncGetUTCSeconds):
851         (JSC::dateProtoFuncGetTimezoneOffset):
852         (JSC::setNewValueFromTimeArgs):
853         (JSC::setNewValueFromDateArgs):
854         (JSC::dateProtoFuncSetYear):
855         (JSC::dateProtoFuncGetYear): Renamed getGregorianDateTime to gregorianDateTime,
856         since it no longer has an out parameter. Uses 0 to indicate invalid dates.
857
858 2009-10-30  Zoltan Horvath  <zoltan@webkit.org>
859
860         Reviewed by Darin Adler.
861
862         Allow custom memory allocation control for JavaScriptCore's ListHashSet
863         https://bugs.webkit.org/show_bug.cgi?id=30853
864
865         Inherits ListHashSet class from FastAllocBase because it is
866         instantiated by 'new' in WebCore/rendering/RenderBlock.cpp:1813.
867
868         * wtf/ListHashSet.h:
869
870 2009-10-30  Oliver Hunt  <oliver@apple.com>
871
872         Reviewed by Gavin Barraclough.
873
874         Regression: crash enumerating properties of an object with getters or setters
875         https://bugs.webkit.org/show_bug.cgi?id=30948
876
877         Add a guard to prevent us trying to cache property enumeration on
878         objects with getters or setters.
879
880         * runtime/JSPropertyNameIterator.cpp:
881         (JSC::JSPropertyNameIterator::create):
882
883 2009-10-30  Roland Steiner  <rolandsteiner@chromium.org>
884
885         Reviewed by Eric Seidel.
886
887         Remove ENABLE_RUBY guards as discussed with Dave Hyatt and Maciej Stachowiak.
888
889         Bug 28420 -  Implement HTML5 <ruby> rendering
890         (https://bugs.webkit.org/show_bug.cgi?id=28420)
891  
892         No new tests (no functional change).
893
894         * Configurations/FeatureDefines.xcconfig:
895
896 2009-10-29  Oliver Hunt  <oliver@apple.com>
897
898         Reviewed by Maciej Stachowiak.
899
900         REGRESSION (r50218-r50262): E*TRADE accounts page is missing content
901         https://bugs.webkit.org/show_bug.cgi?id=30947
902         <rdar://problem/7348833>
903
904         The logic for flagging that a structure has non-enumerable properties
905         was in addPropertyWithoutTransition, rather than in the core Structure::put
906         method.  Despite this I was unable to produce a testcase that caused
907         the failure that etrade was experiencing, but the new assertion in
908         getEnumerablePropertyNames triggers on numerous layout tests without
909         the fix, so in effecti all for..in enumeration in any test ends up
910         doing the required consistency check.
911
912         * runtime/Structure.cpp:
913         (JSC::Structure::addPropertyWithoutTransition):
914         (JSC::Structure::put):
915         (JSC::Structure::getEnumerablePropertyNames):
916         (JSC::Structure::checkConsistency):
917
918 2009-10-29  Gabor Loki  <loki@inf.u-szeged.hu>
919
920         Reviewed by Gavin Barraclough.
921
922         Add cacheFlush support for Thumb-2 on Linux
923         https://bugs.webkit.org/show_bug.cgi?id=30865
924
925         * jit/ExecutableAllocator.h:
926         (JSC::ExecutableAllocator::cacheFlush):
927
928 2009-10-28  Gavin Barraclough  <barraclough@apple.com>
929
930         Reviewed by Oliver Hunt.
931
932         JSC JIT on ARMv7 cannot link jumps >16Mb range
933         https://bugs.webkit.org/show_bug.cgi?id=30891
934
935         Start planing all relative jumps as move-32-bit-immediate-to-register-BX.
936         In the cases where the jump would fall within a relative jump range, use a relative jump.
937
938         * JavaScriptCore.xcodeproj/project.pbxproj:
939         * assembler/ARMv7Assembler.h:
940         (JSC::ARMv7Assembler::~ARMv7Assembler):
941         (JSC::ARMv7Assembler::LinkRecord::LinkRecord):
942         (JSC::ARMv7Assembler::):
943         (JSC::ARMv7Assembler::executableCopy):
944         (JSC::ARMv7Assembler::linkJump):
945         (JSC::ARMv7Assembler::relinkJump):
946         (JSC::ARMv7Assembler::setInt32):
947         (JSC::ARMv7Assembler::isB):
948         (JSC::ARMv7Assembler::isBX):
949         (JSC::ARMv7Assembler::isMOV_imm_T3):
950         (JSC::ARMv7Assembler::isMOVT):
951         (JSC::ARMv7Assembler::isNOP_T1):
952         (JSC::ARMv7Assembler::isNOP_T2):
953         (JSC::ARMv7Assembler::linkJumpAbsolute):
954         (JSC::ARMv7Assembler::twoWordOp5i6Imm4Reg4EncodedImmFirst):
955         (JSC::ARMv7Assembler::twoWordOp5i6Imm4Reg4EncodedImmSecond):
956         (JSC::ARMv7Assembler::ARMInstructionFormatter::twoWordOp5i6Imm4Reg4EncodedImm):
957         * assembler/MacroAssemblerARMv7.h:
958         (JSC::MacroAssemblerARMv7::makeJump):
959         (JSC::MacroAssemblerARMv7::makeBranch):
960         * jit/JIT.h:
961         * wtf/Platform.h:
962
963 2009-10-28  Oliver Hunt  <oliver@apple.com>
964
965         Reviewed by Geoff Garen.
966
967         Improve for..in enumeration performance
968         https://bugs.webkit.org/show_bug.cgi?id=30887
969
970         Improve indexing of an object with a for..in iterator by
971         identifying cases where get_by_val is being used with a iterator
972         as the subscript and replace it with a new get_by_pname
973         bytecode.  get_by_pname then optimizes lookups that directly access
974         the base object.
975
976         * bytecode/CodeBlock.cpp:
977         (JSC::CodeBlock::dump):
978         * bytecode/Opcode.h:
979         * bytecompiler/BytecodeGenerator.cpp:
980         (JSC::BytecodeGenerator::emitGetByVal):
981         * bytecompiler/BytecodeGenerator.h:
982         (JSC::BytecodeGenerator::pushOptimisedForIn):
983         (JSC::BytecodeGenerator::popOptimisedForIn):
984         * interpreter/Interpreter.cpp:
985         (JSC::Interpreter::privateExecute):
986         * jit/JIT.cpp:
987         (JSC::JIT::privateCompileMainPass):
988         (JSC::JIT::privateCompileSlowCases):
989         * jit/JIT.h:
990         * jit/JITPropertyAccess.cpp:
991         (JSC::JIT::compileGetDirectOffset):
992         (JSC::JIT::emit_op_get_by_pname):
993         (JSC::JIT::emitSlow_op_get_by_pname):
994         * parser/Nodes.cpp:
995         (JSC::ForInNode::emitBytecode):
996         * runtime/JSObject.h:
997         * runtime/JSPropertyNameIterator.cpp:
998         (JSC::JSPropertyNameIterator::create):
999         * runtime/JSPropertyNameIterator.h:
1000         (JSC::JSPropertyNameIterator::getOffset):
1001         (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
1002         * runtime/JSValue.h:
1003         (JSC::JSValue::):
1004         * runtime/Structure.cpp:
1005         (JSC::Structure::addPropertyTransition):
1006         (JSC::Structure::changePrototypeTransition):
1007         (JSC::Structure::despecifyFunctionTransition):
1008         (JSC::Structure::addAnonymousSlotsTransition):
1009         (JSC::Structure::getterSetterTransition):
1010         (JSC::Structure::toDictionaryTransition):
1011         (JSC::Structure::addPropertyWithoutTransition):
1012           Track the existence (or not) of non-enumerable properties.
1013         * runtime/Structure.h:
1014         (JSC::Structure::propertyStorageCapacity):
1015         (JSC::Structure::propertyStorageSize):
1016         (JSC::Structure::hasNonEnumerableProperties):
1017         (JSC::Structure::hasAnonymousSlots):
1018
1019 2009-10-28  Dmitry Titov  <dimich@chromium.org>
1020
1021         Not reviewed, attemp to fix Windows build.
1022
1023         Touch the cpp file to cause recompile.
1024
1025         * wtf/Threading.cpp:
1026         (WTF::threadEntryPoint):
1027
1028 2009-10-28  Dmitry Titov  <dimich@chromium.org>
1029
1030         Reviewed by David Levin.
1031
1032         https://bugs.webkit.org/show_bug.cgi?id=30805
1033         Add MessageQueue::removeIf(Predicate&) to remove certain tasks without pulling them from the queue.
1034         Existing Database tests cover this since Database removes tasks when it is stopped.
1035
1036         * wtf/MessageQueue.h:
1037         (WTF::::removeIf):
1038
1039 2009-10-28  Afonso R. Costa Jr.  <afonso.costa@openbossa.org>
1040
1041         Reviewed by Oliver Hunt.
1042
1043         [Qt] Enable YARR when YARR_JIT is enabled
1044         https://bugs.webkit.org/show_bug.cgi?id=30730
1045
1046         When enabling or disabling JIT using JAVASCRIPTCORE_JIT, the ENABLE_YARR should
1047         be toggled also.
1048
1049         * JavaScriptCore.pri:
1050
1051 2009-10-24  Martin Robinson  <martin.james.robinson@gmail.com>
1052
1053         Reviewed by Oliver Hunt.
1054
1055         Fix strict aliasing warning by switching reinterpret_cast to bitwise_cast.
1056
1057         strict-aliasing warnings in JSFunction.h
1058         https://bugs.webkit.org/show_bug.cgi?id=27869
1059
1060         * runtime/JSFunction.h:
1061         (JSC::JSFunction::nativeFunction):
1062         (JSC::JSFunction::scopeChain):
1063         (JSC::JSFunction::setScopeChain):
1064         (JSC::JSFunction::setNativeFunction):
1065
1066 2009-10-28  Jan-Arve Sæther <jan-arve.saether@nokia.com>
1067
1068         Reviewed by Tor Arne Vestbø.
1069
1070         Build-fix for 64-bit Windows
1071
1072         * wtf/Platform.h: Make sure to use WTF_USE_JSVALUE64
1073
1074 2009-10-28  Gavin Barraclough  <barraclough@apple.com>
1075
1076         Reviewed by NOBODY (build fix!).
1077
1078         * jit/JIT.h:
1079
1080 2009-10-26  Holger Hans Peter Freyther  <zecke@selfish.org>
1081
1082         Rubber-stamped by Darin Adler.
1083
1084         Export fastMalloc, fastCalloc, fastRealloc and fastFree on GCC/Unix
1085         https://bugs.webkit.org/show_bug.cgi?id=30769
1086
1087         When using -fvisibility=hidden to hide all internal symbols by default
1088         the malloc symbols will be hidden as well. For memory instrumentation
1089         it is needed to provide an instrumented version of these symbols and
1090         override the normal routines and by changing the visibility back to
1091         default this becomes possible.
1092
1093         The only other solution would be to use system malloc instead of the
1094         TCmalloc implementation but this will not allow to analyze memory
1095         behavior with the default allocator.
1096
1097         * wtf/FastMalloc.h: Define WTF_FAST_MALLOC_EXPORT for GCC and !darwin
1098
1099 2009-10-27  Gavin Barraclough  <barraclough@apple.com>
1100
1101         Rubber Stamped by Samuel Q. Weinig.
1102
1103         Make the asserts protecting the offsets in the JIT more descriptive.
1104
1105         * jit/JIT.h:
1106         * jit/JITCall.cpp:
1107         (JSC::JIT::compileOpCall):
1108         * jit/JITPropertyAccess.cpp:
1109         (JSC::JIT::emit_op_method_check):
1110         (JSC::JIT::compileGetByIdHotPath):
1111         (JSC::JIT::compileGetByIdSlowCase):
1112         (JSC::JIT::emit_op_put_by_id):
1113
1114 2009-10-27  Geoffrey Garen  <ggaren@apple.com>
1115
1116         Reviewed by Sam Weinig.
1117
1118         A little bit of refactoring in the date code.
1119
1120         * JavaScriptCore.exp: Don't export this unused symbol.
1121
1122         * runtime/DateConstructor.cpp:
1123         (JSC::constructDate):
1124
1125         * runtime/DateInstance.cpp:
1126         (JSC::DateInstance::DateInstance):
1127         * runtime/DateInstance.h: Removed some unused functions. Changed the default
1128         constructor to ensure that a DateInstance is always initialized.
1129
1130         * runtime/DatePrototype.cpp:
1131         (JSC::DatePrototype::DatePrototype): Pass an initializer to our constructor,
1132         since it now requires one.
1133
1134         * wtf/DateMath.cpp:
1135         (WTF::msToGregorianDateTime): Only compute our offset from UTC if our
1136         output will require it. Otherwise, our offset is 0.
1137
1138 2009-10-27  Geoffrey Garen  <ggaren@apple.com>
1139
1140         Build fix: Mark DateInstaceCache.h private, so other frameworks can see it.
1141
1142         * JavaScriptCore.xcodeproj/project.pbxproj:
1143
1144 2009-10-27  Geoffrey Garen  <ggaren@apple.com>
1145
1146         Build fix: re-readded this file.
1147
1148         * runtime/DateInstanceCache.h: Added.
1149         (JSC::DateInstanceData::create):
1150         (JSC::DateInstanceData::DateInstanceData):
1151         (JSC::DateInstanceCache::DateInstanceCache):
1152         (JSC::DateInstanceCache::add):
1153         (JSC::DateInstanceCache::lookup):
1154
1155 2009-10-27  Geoffrey Garen  <ggaren@apple.com>
1156
1157         Reviewed by Darin Adler and Oliver Hunt.
1158
1159         https://bugs.webkit.org/show_bug.cgi?id=30800
1160         Cache recently computed date data.
1161         
1162         SunSpider reports a ~0.5% speedup, mostly from date-format-tofte.js.
1163
1164         * GNUmakefile.am:
1165         * JavaScriptCore.gypi:
1166         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
1167         * JavaScriptCore.xcodeproj/project.pbxproj: Added new file.
1168
1169         * runtime/DateInstance.cpp:
1170         (JSC::DateInstance::DateInstance):
1171         (JSC::DateInstance::getGregorianDateTime): Use the shared cache.
1172
1173         * runtime/DateInstance.h: Renamed m_cache to m_data, to avoid the confusion
1174         of a "cache cache".
1175
1176         * runtime/DatePrototype.cpp:
1177         (JSC::formatLocaleDate):
1178         (JSC::dateProtoFuncToString):
1179         (JSC::dateProtoFuncToUTCString):
1180         (JSC::dateProtoFuncToISOString):
1181         (JSC::dateProtoFuncToDateString):
1182         (JSC::dateProtoFuncToTimeString):
1183         (JSC::dateProtoFuncGetFullYear):
1184         (JSC::dateProtoFuncGetUTCFullYear):
1185         (JSC::dateProtoFuncToGMTString):
1186         (JSC::dateProtoFuncGetMonth):
1187         (JSC::dateProtoFuncGetUTCMonth):
1188         (JSC::dateProtoFuncGetDate):
1189         (JSC::dateProtoFuncGetUTCDate):
1190         (JSC::dateProtoFuncGetDay):
1191         (JSC::dateProtoFuncGetUTCDay):
1192         (JSC::dateProtoFuncGetHours):
1193         (JSC::dateProtoFuncGetUTCHours):
1194         (JSC::dateProtoFuncGetMinutes):
1195         (JSC::dateProtoFuncGetUTCMinutes):
1196         (JSC::dateProtoFuncGetSeconds):
1197         (JSC::dateProtoFuncGetUTCSeconds):
1198         (JSC::dateProtoFuncGetTimezoneOffset):
1199         (JSC::setNewValueFromTimeArgs):
1200         (JSC::setNewValueFromDateArgs):
1201         (JSC::dateProtoFuncSetYear):
1202         (JSC::dateProtoFuncGetYear): Pass an ExecState to these functions, so they
1203         can access the DateInstanceCache.
1204
1205         * runtime/JSGlobalData.h: Keep a DateInstanceCache.
1206
1207 2009-10-27  James Robinson  <jamesr@chromium.org>
1208
1209         Reviewed by Darin Fisher.
1210
1211         Ensures that JavaScriptCore/wtf/CurrentTime.cpp is not built in PLATFORM(CHROMIUM) builds.
1212
1213         Chromium uses a different method to calculate the current time than is used in
1214         JavaScriptCore/wtf/CurrentTime.cpp. This can lead to time skew when calls to currentTime() and Chromium's time
1215         function are mixed.  In particular, timers can get scheduled in the past which leads to 100% CPU use.
1216         See http://code.google.com/p/chromium/issues/detail?id=25892 for an example.
1217
1218         https://bugs.webkit.org/show_bug.cgi?id=30833
1219
1220         * JavaScriptCore.gyp/JavaScriptCore.gyp:
1221         * wtf/CurrentTime.cpp:
1222
1223 2009-10-27  Peter Varga  <pvarga@inf.u-szeged.hu>
1224
1225         Rubber-stamped by Tor Arne Vestbø.
1226
1227         Fix typo in RegexInterpreter.cpp and RegexJIT.cpp alterantive to
1228         alternative.
1229
1230         * yarr/RegexInterpreter.cpp:
1231         (JSC::Yarr::ByteCompiler::alternativeBodyDisjunction):
1232         (JSC::Yarr::ByteCompiler::alternativeDisjunction):
1233         (JSC::Yarr::ByteCompiler::emitDisjunction):
1234         * yarr/RegexJIT.cpp:
1235         (JSC::Yarr::RegexGenerator::generateDisjunction):
1236
1237 2009-10-26  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
1238
1239         Reviewed by Darin Adler.
1240
1241         Make .rc files compile on Windows without depending on MFC headers
1242         https://bugs.webkit.org/show_bug.cgi?id=30750
1243
1244         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc: Use
1245         winresrc.h because it exists even when MFC is not installed, and is
1246         all that's needed here.
1247
1248 2009-10-26  Gabor Loki  <loki@inf.u-szeged.hu>
1249
1250         Reviewed by Gavin Barraclough.
1251
1252         The thunkReturnAddress is on JITStackFrame on ARM JIT as well
1253         https://bugs.webkit.org/show_bug.cgi?id=30782
1254
1255         Move the thunkReturnAddress from top of the stack into the JITStackFrame
1256         structure. This is a requirement for JSValue32_64 support on ARM.
1257
1258         * assembler/MacroAssemblerARM.h:
1259         (JSC::MacroAssemblerARM::ret): Return with link register
1260         (JSC::MacroAssemblerARM::prepareCall): Store the return address in link register
1261         * jit/JIT.h: Remove unused ctiReturnRegister
1262         * jit/JITInlineMethods.h: Same as ARMv7
1263         (JSC::JIT::restoreArgumentReference): Ditto.
1264         (JSC::JIT::restoreArgumentReferenceForTrampoline): Ditto.
1265         * jit/JITOpcodes.cpp: Remove ctiReturnRegister related instruction
1266         * jit/JITStubs.cpp: Store thunkReturnAddress on JITStackFrame. Use
1267         small trampoline functions which handle return addresses for each
1268         CTI_STUB_FUNCTION.
1269         * jit/JITStubs.h: Store thunkReturnAddress on JITStackFrame
1270         (JSC::JITStackFrame::returnAddressSlot): Return with the address of thunkReturnAddress
1271         * yarr/RegexJIT.cpp:
1272         (JSC::Yarr::RegexGenerator::generateEnter): Remove the unnecessary instruction
1273
1274 2009-10-26  Steve Block  <steveblock@google.com>
1275
1276         Reviewed by Darin Adler.
1277
1278         Adds ability to disable ReadWriteLock on platforms (eg Android) that use pthreads but do not support pthread_rwlock.
1279         https://bugs.webkit.org/show_bug.cgi?id=30713
1280
1281         * wtf/Platform.h: Modified. Defines HAVE_PTHREAD_RWLOCK for all platforms currently using pthreads.
1282         * wtf/Threading.h: Modified. Use pthread_rwlock_t only when HAVE_PTHREAD_RWLOCK is defined.
1283         * wtf/ThreadingPthreads.cpp: Modified. Build ReadWriteLock methods only when HAVE_PTHREAD_RWLOCK is defined.
1284
1285 2009-10-24  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
1286
1287         Reviewed by Holger Freyther.
1288
1289         [Qt] [Symbian] Set the capability and memory required to run QtWebKit for Symbian
1290         https://bugs.webkit.org/show_bug.cgi?id=30476
1291
1292         Assign ReadUserData WriteUserData NetworkServices Symbian capabilities
1293         to jsc.exe.
1294
1295         * jsc.pro:
1296
1297 2009-10-23  Steve Block  <steveblock@google.com>
1298
1299         Reviewed by Dmitry Titov.
1300
1301         Fixes a leak in createThreadInternal on Android.
1302         https://bugs.webkit.org/show_bug.cgi?id=30698
1303
1304         * wtf/ThreadingPthreads.cpp: Modified.
1305         (WTF::createThreadInternal): Avoid leaking a ThreadData object on failure.
1306
1307 2009-10-22  Geoffrey Garen  <ggaren@apple.com>
1308
1309         Reviewed by Alexey Proskuryakov.
1310
1311         Fixed ASSERT when opening Safari's Caches window while the Web Inspector
1312         is open.
1313
1314         * runtime/Collector.cpp:
1315         (JSC::typeName): Added two new types to the type name list in the Collector.
1316         These types have been around for a while, but nobody remembered to consider them here.
1317
1318         * runtime/JSCell.h:
1319         (JSC::JSCell::isPropertyNameIterator):
1320         * runtime/JSPropertyNameIterator.h:
1321         (JSC::JSPropertyNameIterator::isPropertyNameIterator): Give the Collector
1322         a way to tell if a cell is a JSPropertyNameIterator.
1323
1324 2009-10-22  Steve Falkenburg  <sfalken@apple.com>
1325
1326         Reviewed by Jon Honeycutt.
1327
1328         https://bugs.webkit.org/show_bug.cgi?id=30686
1329         Remove debug-specific def file.
1330         Only Debug_All target uses JavaScriptCore_debug.dll naming, and since
1331         that target is only used internally, maintaining two files just to
1332         suppress a single link warning isn't worthwhile.
1333
1334         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
1335         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Removed.
1336
1337 2009-10-21  Jon Honeycutt  <jhoneycutt@apple.com>
1338
1339         <rdar://problem/7270320> Screenshots of off-screen plug-ins are blank
1340         <rdar://problem/7270314> After halting a transparent PluginView on
1341         Windows, the transparency is applied twice
1342
1343         Reviewed by Dan Bernstein.
1344
1345         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1346         Export WTF::deleteOwnedPtr(HDC).
1347
1348         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
1349         Ditto.
1350
1351 2009-10-20  Geoffrey Garen  <ggaren@apple.com>
1352
1353         Windows build fix: updated variable name.
1354
1355         * runtime/DatePrototype.cpp:
1356         (JSC::formatLocaleDate):
1357
1358 2009-10-20  Geoffrey Garen  <ggaren@apple.com>
1359
1360         Reviewed by Mark Rowe.
1361
1362         * jit/JITOpcodes.cpp:
1363         (JSC::JIT::emit_op_next_pname): Slightly tweaked this #ifdef to match the
1364         size of a JSValue because m_jsStrings is an array of JSValues.
1365
1366 2009-10-20  Geoffrey Garen  <ggaren@apple.com>
1367
1368         Reviewed by Mark Rowe.
1369
1370         Fixed a 64-bit regression caused by the fix for
1371         https://bugs.webkit.org/show_bug.cgi?id=30570.
1372
1373         * jit/JITOpcodes.cpp:
1374         (JSC::JIT::emit_op_next_pname): Use TimesEight stepping on 64-bit, since
1375         64-bit pointers are eight bytes long.
1376
1377 2009-10-20  Geoffrey Garen  <ggaren@apple.com>
1378
1379         Reviewed by Sam Weinig.
1380
1381         Refactored DateInstance::msToGregorianDateTime so that a DateInstance's
1382         caller doesn't need to supply the DateInstance's own internal value to
1383         the DateInstance.
1384
1385         * runtime/DateInstance.cpp:
1386         (JSC::DateInstance::getGregorianDateTime): Renamed from "msToGregorianDateTime".
1387
1388         * runtime/DateInstance.h:
1389         * runtime/DatePrototype.cpp:
1390         (JSC::formatLocaleDate):
1391         (JSC::dateProtoFuncToString):
1392         (JSC::dateProtoFuncToUTCString):
1393         (JSC::dateProtoFuncToISOString):
1394         (JSC::dateProtoFuncToDateString):
1395         (JSC::dateProtoFuncToTimeString):
1396         (JSC::dateProtoFuncToLocaleString):
1397         (JSC::dateProtoFuncToLocaleDateString):
1398         (JSC::dateProtoFuncToLocaleTimeString):
1399         (JSC::dateProtoFuncGetTime):
1400         (JSC::dateProtoFuncGetFullYear):
1401         (JSC::dateProtoFuncGetUTCFullYear):
1402         (JSC::dateProtoFuncToGMTString):
1403         (JSC::dateProtoFuncGetMonth):
1404         (JSC::dateProtoFuncGetUTCMonth):
1405         (JSC::dateProtoFuncGetDate):
1406         (JSC::dateProtoFuncGetUTCDate):
1407         (JSC::dateProtoFuncGetDay):
1408         (JSC::dateProtoFuncGetUTCDay):
1409         (JSC::dateProtoFuncGetHours):
1410         (JSC::dateProtoFuncGetUTCHours):
1411         (JSC::dateProtoFuncGetMinutes):
1412         (JSC::dateProtoFuncGetUTCMinutes):
1413         (JSC::dateProtoFuncGetSeconds):
1414         (JSC::dateProtoFuncGetUTCSeconds):
1415         (JSC::dateProtoFuncGetTimezoneOffset):
1416         (JSC::setNewValueFromTimeArgs):
1417         (JSC::setNewValueFromDateArgs):
1418         (JSC::dateProtoFuncSetYear):
1419         (JSC::dateProtoFuncGetYear): Also renamed "utc" to "outputIsUTC", for clarity.
1420
1421 2009-10-20  Gabor Loki  <loki@inf.u-szeged.hu>
1422
1423         Reviewed by Geoffrey Garen.
1424
1425         The op_next_pname should use 4 bytes addressing mode in case of JSValue32
1426         https://bugs.webkit.org/show_bug.cgi?id=30570
1427
1428         * jit/JITOpcodes.cpp:
1429         (JSC::JIT::emit_op_next_pname):
1430
1431 2009-10-20  Gabor Loki  <loki@inf.u-szeged.hu>
1432
1433         Reviewed by Oliver Hunt.
1434
1435         Move OverridesMarkChildren flag from DatePrototype to its parent class
1436         https://bugs.webkit.org/show_bug.cgi?id=30372
1437
1438         * runtime/DateInstance.h:
1439         (JSC::DateInstance::createStructure):
1440         * runtime/DatePrototype.h:
1441
1442 2009-10-19  Geoffrey Garen  <ggaren@apple.com>
1443
1444         Reviewed by Oliver Hunt.
1445
1446         Tightened up some put_by_id_transition code generation.
1447         https://bugs.webkit.org/show_bug.cgi?id=30539
1448
1449         * jit/JIT.h:
1450         * jit/JITPropertyAccess.cpp:
1451         (JSC::JIT::testPrototype):
1452         (JSC::JIT::privateCompilePutByIdTransition): No need to do object type
1453         checks or read Structures and prototypes from objects: they're all known
1454         constants at compile time.
1455
1456 2009-10-19  Geoffrey Garen  <ggaren@apple.com>
1457
1458         Reviewed by Sam Weinig.
1459
1460         Added a private API for getting a global context from a context, for
1461         clients who want to preserve a context for a later callback.
1462
1463         * API/APICast.h:
1464         (toGlobalRef): Added an ASSERT, since this function is used more often
1465         than before.
1466
1467         * API/JSContextRef.cpp:
1468         * API/JSContextRefPrivate.h: Added. The new API.
1469
1470         * API/tests/testapi.c:
1471         (print_callAsFunction):
1472         (main): Test the new API.
1473
1474         * JavaScriptCore.exp:
1475         * JavaScriptCore.xcodeproj/project.pbxproj: Build and export the new API.
1476
1477 2009-10-17  Geoffrey Garen  <ggaren@apple.com>
1478
1479         Reviewed by Oliver Hunt.
1480         
1481         Tightened up some instanceof code generation.
1482         https://bugs.webkit.org/show_bug.cgi?id=30488
1483
1484         * jit/JITOpcodes.cpp:
1485         (JSC::JIT::emit_op_instanceof):
1486         (JSC::JIT::emitSlow_op_instanceof): No need to do object type checks - 
1487         cell type checks and ImplementsDefaultHasIntance checks implicitly
1488         supersede object type checks.
1489
1490 2009-10-18  Kwang Yul Seo  <skyul@company100.net>
1491
1492         Reviewed by Darin Adler.
1493
1494         Use _stricmp and _strnicmp instead of deprecated stricmp and strnicmp.
1495         https://bugs.webkit.org/show_bug.cgi?id=30474
1496
1497         stricmp and strnicmp are deprecated beginning in Visual
1498         C++ 2005. Use _stricmp and _strnicmp instead in StringExtras.h.
1499
1500         * wtf/StringExtras.h:
1501         (strncasecmp):
1502         (strcasecmp):
1503
1504 2009-10-16  Geoffrey Garen  <ggaren@apple.com>
1505
1506         Build fix: apparently we shouldn't export those symbols?
1507
1508         * JavaScriptCore.exp:
1509
1510 2009-10-16  Geoffrey Garen  <ggaren@apple.com>
1511
1512         Build fix: export some symbols.
1513
1514         * JavaScriptCore.exp:
1515
1516 2009-10-16  Oliver Hunt  <oliver@apple.com>
1517
1518         Reviewed by Gavin Barraclough.
1519
1520         structure typeinfo flags should be inherited.
1521         https://bugs.webkit.org/show_bug.cgi?id=30468
1522
1523         Add StructureFlag constant to the various JSC classes and use
1524         it for the TypeInfo construction.  This allows us to simply
1525         accumulate flags by basing each classes StructureInfo on its parents.
1526
1527         * API/JSCallbackConstructor.h:
1528         (JSC::JSCallbackConstructor::createStructure):
1529         * API/JSCallbackFunction.h:
1530         (JSC::JSCallbackFunction::createStructure):
1531         * API/JSCallbackObject.h:
1532         (JSC::JSCallbackObject::createStructure):
1533         * debugger/DebuggerActivation.h:
1534         (JSC::DebuggerActivation::createStructure):
1535         * runtime/Arguments.h:
1536         (JSC::Arguments::createStructure):
1537         * runtime/BooleanObject.h:
1538         (JSC::BooleanObject::createStructure):
1539         * runtime/DatePrototype.h:
1540         (JSC::DatePrototype::createStructure):
1541         * runtime/FunctionPrototype.h:
1542         (JSC::FunctionPrototype::createStructure):
1543         * runtime/GlobalEvalFunction.h:
1544         (JSC::GlobalEvalFunction::createStructure):
1545         * runtime/InternalFunction.h:
1546         (JSC::InternalFunction::createStructure):
1547         * runtime/JSActivation.h:
1548         (JSC::JSActivation::createStructure):
1549         * runtime/JSArray.h:
1550         (JSC::JSArray::createStructure):
1551         * runtime/JSByteArray.cpp:
1552         (JSC::JSByteArray::createStructure):
1553         * runtime/JSByteArray.h:
1554         * runtime/JSFunction.h:
1555         (JSC::JSFunction::createStructure):
1556         * runtime/JSGlobalObject.h:
1557         (JSC::JSGlobalObject::createStructure):
1558         * runtime/JSNotAnObject.h:
1559         (JSC::JSNotAnObject::createStructure):
1560         * runtime/JSONObject.h:
1561         (JSC::JSONObject::createStructure):
1562         * runtime/JSObject.h:
1563         (JSC::JSObject::createStructure):
1564         * runtime/JSStaticScopeObject.h:
1565         (JSC::JSStaticScopeObject::createStructure):
1566         * runtime/JSVariableObject.h:
1567         (JSC::JSVariableObject::createStructure):
1568         * runtime/JSWrapperObject.h:
1569         (JSC::JSWrapperObject::createStructure):
1570         * runtime/MathObject.h:
1571         (JSC::MathObject::createStructure):
1572         * runtime/NumberConstructor.h:
1573         (JSC::NumberConstructor::createStructure):
1574         * runtime/NumberObject.h:
1575         (JSC::NumberObject::createStructure):
1576         * runtime/RegExpConstructor.h:
1577         (JSC::RegExpConstructor::createStructure):
1578         * runtime/RegExpObject.h:
1579         (JSC::RegExpObject::createStructure):
1580         * runtime/StringObject.h:
1581         (JSC::StringObject::createStructure):
1582         * runtime/StringObjectThatMasqueradesAsUndefined.h:
1583         (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
1584
1585 2009-10-16  Geoffrey Garen  <ggaren@apple.com>
1586
1587         Reviewed by Oliver Hunt.
1588         
1589         Fast for-in enumeration: Cache JSPropertyNameIterator; cache JSStrings
1590         in JSPropertyNameIterator; inline more code.
1591
1592         1.024x as fast on SunSpider (fasta: 1.43x as fast).
1593
1594         * bytecode/CodeBlock.cpp:
1595         (JSC::CodeBlock::dump):
1596         * bytecode/Opcode.h:
1597         * bytecompiler/BytecodeGenerator.cpp:
1598         (JSC::BytecodeGenerator::emitGetPropertyNames):
1599         (JSC::BytecodeGenerator::emitNextPropertyName):
1600         * bytecompiler/BytecodeGenerator.h: Added a few extra operands to
1601         op_get_pnames and op_next_pname so that we can track iteration state
1602         in the register file instead of in the JSPropertyNameIterator. (To be
1603         cacheable, the JSPropertyNameIterator must be stateless.)
1604
1605         * interpreter/Interpreter.cpp:
1606         (JSC::Interpreter::tryCachePutByID):
1607         (JSC::Interpreter::tryCacheGetByID): Updated for rename to
1608         "normalizePrototypeChain" and removal of "isCacheable". 
1609
1610         (JSC::Interpreter::privateExecute): Updated for in-RegisterFile
1611         iteration state tracking.
1612
1613         * jit/JIT.cpp:
1614         (JSC::JIT::privateCompileMainPass):
1615         * jit/JIT.h:
1616         * jit/JITOpcodes.cpp:
1617         (JSC::JIT::emit_op_get_pnames): Updated for in-RegisterFile
1618         iteration state tracking.
1619
1620         (JSC::JIT::emit_op_next_pname): Inlined code generation for op_next_pname.
1621
1622         * jit/JITStubs.cpp:
1623         (JSC::JITThunks::tryCachePutByID):
1624         (JSC::JITThunks::tryCacheGetByID): Updated for rename to
1625         "normalizePrototypeChain" and removal of "isCacheable". 
1626
1627         (JSC::DEFINE_STUB_FUNCTION):
1628         * jit/JITStubs.h:
1629         (JSC::): Added has_property and to_object stubs. Removed op_next_pname
1630         stub, since has_property is all we need anymore.
1631
1632         * parser/Nodes.cpp:
1633         (JSC::ForInNode::emitBytecode): Updated for in-RegisterFile
1634         iteration state tracking.
1635
1636         * runtime/JSCell.h:
1637         * runtime/JSObject.cpp:
1638         (JSC::JSObject::getPropertyNames): Don't do caching at this layer
1639         anymore, since we don't create a JSPropertyNameIterator at this layer.
1640
1641         * runtime/JSPropertyNameIterator.cpp:
1642         (JSC::JSPropertyNameIterator::create): Do do caching at this layer.
1643         (JSC::JSPropertyNameIterator::get):  Updated for in-RegisterFile
1644         iteration state tracking.
1645         (JSC::JSPropertyNameIterator::markChildren): Mark our JSStrings.
1646
1647         * runtime/JSPropertyNameIterator.h:
1648         (JSC::JSPropertyNameIterator::size):
1649         (JSC::JSPropertyNameIterator::setCachedStructure):
1650         (JSC::JSPropertyNameIterator::cachedStructure):
1651         (JSC::JSPropertyNameIterator::setCachedPrototypeChain):
1652         (JSC::JSPropertyNameIterator::cachedPrototypeChain):
1653         (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
1654         (JSC::Structure::setEnumerationCache): Don't store iteration state in
1655         a JSPropertyNameIterator. Do cache a JSPropertyNameIterator in a
1656         Structure.
1657
1658         * runtime/JSValue.h:
1659         (JSC::asCell):
1660         * runtime/MarkStack.h: Make those mischievous #include gods happy.
1661
1662         * runtime/ObjectConstructor.cpp:
1663
1664         * runtime/Operations.h:
1665         (JSC::normalizePrototypeChain): Renamed countPrototypeChainEntriesAndCheckForProxies
1666         to normalizePrototypeChain, since it changes dictionary prototypes to
1667         non-dictionary objects.
1668
1669         * runtime/PropertyNameArray.cpp:
1670         (JSC::PropertyNameArray::add):
1671         * runtime/PropertyNameArray.h:
1672         (JSC::PropertyNameArrayData::PropertyNameArrayData):
1673         (JSC::PropertyNameArray::data):
1674         (JSC::PropertyNameArray::size):
1675         (JSC::PropertyNameArray::begin):
1676         (JSC::PropertyNameArray::end): Simplified some code here to help with
1677         current and future refactoring.
1678
1679         * runtime/Protect.h:
1680         * runtime/Structure.cpp:
1681         (JSC::Structure::~Structure):
1682         (JSC::Structure::addPropertyWithoutTransition):
1683         (JSC::Structure::removePropertyWithoutTransition): No need to clear
1684         the enumeration cache with adding / removing properties without
1685         transition. It is an error to add / remove properties without transition
1686         once an object has been observed, and we can ASSERT to catch that.
1687
1688         * runtime/Structure.h:
1689         (JSC::Structure::enumerationCache): Changed the enumeration cache to
1690         hold a JSPropertyNameIterator.
1691
1692         * runtime/StructureChain.cpp:
1693         * runtime/StructureChain.h:
1694         (JSC::StructureChain::head): Removed StructureChain::isCacheable because
1695         it was wrong-headed in two ways: (1) It gave up when a prototype was a
1696         dictionary, but instead we want un-dictionary heavily accessed
1697         prototypes; (2) It folded a test for hasDefaultGetPropertyNames() into
1698         a generic test for "cacheable-ness", but hasDefaultGetPropertyNames()
1699         is only releavant to for-in caching.
1700
1701 2009-10-16  Steve Falkenburg  <sfalken@apple.com>
1702
1703         Reviewed by Adam Roben.
1704
1705         Add a Debug_All configuration to build entire stack as debug.
1706         Change Debug_Internal to:
1707         - stop using _debug suffix for all WebKit/Safari binaries
1708         - not use _debug as a DLL naming suffix
1709         - use non-debug C runtime lib.
1710
1711         * JavaScriptCore.vcproj/JavaScriptCore.make: Debug build in makefile should build Debug_All.
1712         * JavaScriptCore.vcproj/JavaScriptCore.sln: Add Debug_All configuration.
1713         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add Debug_All configuration.
1714         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Renamed single configuration from "Release" to "all".
1715         * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: Add Debug_All configuration.
1716         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Add Debug_All configuration.
1717         * JavaScriptCore.vcproj/jsc/jsc.vcproj: Add Debug_All configuration.
1718         * JavaScriptCore.vcproj/testapi/testapi.vcproj: Add Debug_All configuration.
1719
1720 2009-10-16  Oliver Hunt  <oliver@apple.com>
1721
1722         Reviewed by Gavin Barraclough.
1723
1724         Make typeinfo flags default to false
1725         https://bugs.webkit.org/show_bug.cgi?id=30372
1726
1727         Last part -- replace HasDefaultGetPropertyNames with OverridesGetPropertyNames
1728         flag.
1729
1730         * API/JSCallbackConstructor.h:
1731         (JSC::JSCallbackConstructor::createStructure):
1732         * API/JSCallbackObject.h:
1733         (JSC::JSCallbackObject::createStructure):
1734         * debugger/DebuggerActivation.h:
1735         (JSC::DebuggerActivation::createStructure):
1736         * runtime/Arguments.h:
1737         (JSC::Arguments::createStructure):
1738         * runtime/BooleanObject.h:
1739         (JSC::BooleanObject::createStructure):
1740         * runtime/DatePrototype.h:
1741         (JSC::DatePrototype::createStructure):
1742         * runtime/FunctionPrototype.h:
1743         (JSC::FunctionPrototype::createStructure):
1744         * runtime/GlobalEvalFunction.h:
1745         (JSC::GlobalEvalFunction::createStructure):
1746         * runtime/JSAPIValueWrapper.h:
1747         (JSC::JSAPIValueWrapper::createStructure):
1748         * runtime/JSActivation.h:
1749         (JSC::JSActivation::createStructure):
1750         * runtime/JSArray.h:
1751         (JSC::JSArray::createStructure):
1752         * runtime/JSByteArray.cpp:
1753         (JSC::JSByteArray::createStructure):
1754         * runtime/JSFunction.h:
1755         (JSC::JSFunction::createStructure):
1756         * runtime/JSGlobalObject.h:
1757         (JSC::JSGlobalObject::createStructure):
1758         * runtime/JSNotAnObject.h:
1759         (JSC::JSNotAnObject::createStructure):
1760         * runtime/JSONObject.h:
1761         (JSC::JSONObject::createStructure):
1762         * runtime/JSObject.cpp:
1763         (JSC::JSObject::getPropertyNames):
1764         * runtime/JSObject.h:
1765         (JSC::JSObject::createStructure):
1766         * runtime/JSStaticScopeObject.h:
1767         (JSC::JSStaticScopeObject::createStructure):
1768         * runtime/JSTypeInfo.h:
1769         (JSC::TypeInfo::overridesGetPropertyNames):
1770         * runtime/JSVariableObject.h:
1771         (JSC::JSVariableObject::createStructure):
1772         * runtime/JSWrapperObject.h:
1773         (JSC::JSWrapperObject::createStructure):
1774         * runtime/MathObject.h:
1775         (JSC::MathObject::createStructure):
1776         * runtime/NumberConstructor.h:
1777         (JSC::NumberConstructor::createStructure):
1778         * runtime/NumberObject.h:
1779         (JSC::NumberObject::createStructure):
1780         * runtime/RegExpConstructor.h:
1781         (JSC::RegExpConstructor::createStructure):
1782         * runtime/RegExpObject.h:
1783         (JSC::RegExpObject::createStructure):
1784         * runtime/StringObject.h:
1785         (JSC::StringObject::createStructure):
1786         * runtime/StringObjectThatMasqueradesAsUndefined.h:
1787         (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
1788         * runtime/StructureChain.cpp:
1789         (JSC::StructureChain::isCacheable):
1790
1791 2009-10-16  Kevin Ollivier  <kevino@theolliviers.com>
1792
1793         wxMSW build fix, we can't use the simple hash there because the PlatformModuleVersion 
1794         structure differs.
1795
1796         * wtf/Platform.h:
1797
1798 2009-10-16  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
1799
1800         Reviewed by Simon Hausmann.
1801
1802         [Qt] Implement ExecutableAllocator for Symbian
1803         https://bugs.webkit.org/show_bug.cgi?id=29946
1804
1805         Tested with YARR JIT enabled for Symbian; 
1806         This patch does not (yet) enable YARR JIT by default.
1807
1808         * JavaScriptCore.pri:
1809         * jit/ExecutableAllocator.h:
1810         * jit/ExecutableAllocatorSymbian.cpp: Added.
1811         (JSC::ExecutableAllocator::intializePageSize):
1812         (JSC::ExecutablePool::systemAlloc):
1813         (JSC::ExecutablePool::systemRelease):
1814
1815 2009-10-15  Oliver Hunt  <oliver@apple.com>
1816
1817         Reviewed by Darin Adler.
1818
1819         Make typeinfo flags default to false
1820         https://bugs.webkit.org/show_bug.cgi?id=30372
1821
1822         Part 2 -- Reverse the TypeInfo HasDefaultMark flag to OverridesMarkChildren, etc
1823
1824         * API/JSCallbackConstructor.h:
1825         (JSC::JSCallbackConstructor::createStructure):
1826         * API/JSCallbackFunction.h:
1827         (JSC::JSCallbackFunction::createStructure):
1828         * API/JSCallbackObject.h:
1829         (JSC::JSCallbackObject::createStructure):
1830         * debugger/DebuggerActivation.h:
1831         (JSC::DebuggerActivation::createStructure):
1832         * runtime/Arguments.h:
1833         (JSC::Arguments::createStructure):
1834         * runtime/BooleanObject.h:
1835         (JSC::BooleanObject::createStructure):
1836         * runtime/DatePrototype.h:
1837         (JSC::DatePrototype::createStructure):
1838         * runtime/FunctionPrototype.h:
1839         (JSC::FunctionPrototype::createStructure):
1840         * runtime/GetterSetter.h:
1841         (JSC::GetterSetter::createStructure):
1842         * runtime/GlobalEvalFunction.h:
1843         (JSC::GlobalEvalFunction::createStructure):
1844         * runtime/InternalFunction.h:
1845         (JSC::InternalFunction::createStructure):
1846         * runtime/JSAPIValueWrapper.h:
1847         (JSC::JSAPIValueWrapper::createStructure):
1848         * runtime/JSActivation.h:
1849         (JSC::JSActivation::createStructure):
1850         * runtime/JSArray.h:
1851         (JSC::JSArray::createStructure):
1852         (JSC::MarkStack::markChildren):
1853         * runtime/JSByteArray.cpp:
1854         (JSC::JSByteArray::createStructure):
1855         * runtime/JSFunction.h:
1856         (JSC::JSFunction::createStructure):
1857         * runtime/JSGlobalObject.h:
1858         (JSC::JSGlobalObject::createStructure):
1859         * runtime/JSNotAnObject.h:
1860         (JSC::JSNotAnObject::createStructure):
1861         * runtime/JSNumberCell.h:
1862         (JSC::JSNumberCell::createStructure):
1863         * runtime/JSONObject.h:
1864         (JSC::JSONObject::createStructure):
1865         * runtime/JSObject.h:
1866         (JSC::JSObject::createStructure):
1867         * runtime/JSPropertyNameIterator.h:
1868         (JSC::JSPropertyNameIterator::createStructure):
1869         * runtime/JSStaticScopeObject.h:
1870         (JSC::JSStaticScopeObject::createStructure):
1871         * runtime/JSString.h:
1872         (JSC::JSString::createStructure):
1873         * runtime/JSTypeInfo.h:
1874         (JSC::TypeInfo::overridesMarkChildren):
1875         * runtime/JSVariableObject.h:
1876         (JSC::JSVariableObject::createStructure):
1877         * runtime/JSWrapperObject.h:
1878         (JSC::JSWrapperObject::createStructure):
1879         * runtime/MathObject.h:
1880         (JSC::MathObject::createStructure):
1881         * runtime/NumberConstructor.h:
1882         (JSC::NumberConstructor::createStructure):
1883         * runtime/NumberObject.h:
1884         (JSC::NumberObject::createStructure):
1885         * runtime/RegExpConstructor.h:
1886         (JSC::RegExpConstructor::createStructure):
1887         * runtime/RegExpObject.h:
1888         (JSC::RegExpObject::createStructure):
1889         * runtime/StringObject.h:
1890         (JSC::StringObject::createStructure):
1891         * runtime/StringObjectThatMasqueradesAsUndefined.h:
1892         (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
1893
1894 2009-10-14  Oliver Hunt  <oliver@apple.com>
1895
1896         Reviewed by Geoff Garen.
1897
1898         Make typeinfo flags default to false
1899         https://bugs.webkit.org/show_bug.cgi?id=30372
1900         
1901         Part 1. Reverse the HasStandardGetOwnPropertySlot flag.
1902
1903         * API/JSCallbackConstructor.h:
1904         (JSC::JSCallbackConstructor::createStructure):
1905         * API/JSCallbackFunction.h:
1906         (JSC::JSCallbackFunction::createStructure):
1907         * API/JSCallbackObject.h:
1908         (JSC::JSCallbackObject::createStructure):
1909         * debugger/DebuggerActivation.h:
1910         (JSC::DebuggerActivation::createStructure):
1911         * jit/JITStubs.cpp:
1912         (JSC::DEFINE_STUB_FUNCTION):
1913         * runtime/Arguments.h:
1914         (JSC::Arguments::createStructure):
1915         * runtime/BooleanObject.h:
1916         (JSC::BooleanObject::createStructure):
1917         * runtime/DatePrototype.h:
1918         (JSC::DatePrototype::createStructure):
1919         * runtime/FunctionPrototype.h:
1920         (JSC::FunctionPrototype::createStructure):
1921         * runtime/GlobalEvalFunction.h:
1922         (JSC::GlobalEvalFunction::createStructure):
1923         * runtime/InternalFunction.h:
1924         (JSC::InternalFunction::createStructure):
1925         * runtime/JSActivation.h:
1926         (JSC::JSActivation::createStructure):
1927         * runtime/JSArray.h:
1928         (JSC::JSArray::createStructure):
1929         * runtime/JSByteArray.cpp:
1930         (JSC::JSByteArray::createStructure):
1931         * runtime/JSFunction.h:
1932         (JSC::JSFunction::createStructure):
1933         * runtime/JSGlobalObject.h:
1934         (JSC::JSGlobalObject::createStructure):
1935         * runtime/JSNumberCell.h:
1936         (JSC::JSNumberCell::createStructure):
1937         * runtime/JSONObject.h:
1938         (JSC::JSONObject::createStructure):
1939         * runtime/JSObject.h:
1940         (JSC::JSObject::createStructure):
1941         (JSC::JSCell::fastGetOwnPropertySlot):
1942         * runtime/JSStaticScopeObject.h:
1943         (JSC::JSStaticScopeObject::createStructure):
1944         * runtime/JSString.h:
1945         (JSC::JSString::createStructure):
1946         * runtime/JSTypeInfo.h:
1947         (JSC::TypeInfo::overridesGetOwnPropertySlot):
1948         * runtime/JSVariableObject.h:
1949         (JSC::JSVariableObject::createStructure):
1950         * runtime/JSWrapperObject.h:
1951         (JSC::JSWrapperObject::createStructure):
1952         * runtime/MathObject.h:
1953         (JSC::MathObject::createStructure):
1954         * runtime/NumberConstructor.h:
1955         (JSC::NumberConstructor::createStructure):
1956         * runtime/NumberObject.h:
1957         (JSC::NumberObject::createStructure):
1958         * runtime/RegExpConstructor.h:
1959         (JSC::RegExpConstructor::createStructure):
1960         * runtime/RegExpObject.h:
1961         (JSC::RegExpObject::createStructure):
1962         * runtime/StringObject.h:
1963         (JSC::StringObject::createStructure):
1964         * runtime/StringObjectThatMasqueradesAsUndefined.h:
1965         (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
1966
1967 2009-10-14  Kevin Ollivier  <kevino@theolliviers.com>
1968 2009-10-14  Darin Adler  <darin@apple.com>
1969
1970         Additions so fix for https://bugs.webkit.org/show_bug.cgi?id=18994
1971         can build on Windows.
1972
1973         * wtf/MathExtras.h: Added llround and llroundf for Windows.
1974
1975 2009-10-14  Kevin Ollivier  <kevino@theolliviers.com>
1976
1977         wx build fix. Set ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH for plugins while we're still building stubs.
1978
1979         * wtf/Platform.h:
1980
1981 2009-10-13  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
1982
1983         Reviewed by Simon Hausmann.
1984
1985         Refactor ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH
1986         https://bugs.webkit.org/show_bug.cgi?id=30278
1987
1988         Move the definition of ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH
1989         from the make system into common code.
1990
1991         * wtf/Platform.h:
1992
1993 2009-10-13  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
1994
1995         Reviewed by Darin Adler.
1996
1997         ARM compiler does not understand reinterpret_cast<void*>
1998         https://bugs.webkit.org/show_bug.cgi?id=29034
1999
2000         Change reinterpret_cast<void*> to regular C style (void*) cast 
2001         for the ARM RVCT compiler.
2002
2003         * assembler/MacroAssemblerCodeRef.h:
2004         (JSC::FunctionPtr::FunctionPtr): 
2005         * jit/JITOpcodes.cpp: Cast to FunctionPtr first 
2006            instead of directly casting to reinterpret_cast
2007         * jit/JITStubCall.h: Ditto + change the type of m_stub
2008           from void* to FunctionPtr.
2009         (JSC::JITStubCall::JITStubCall): 
2010         (JSC::JITStubCall::call):
2011         * jit/JITStubs.cpp: Ditto.
2012         (JSC::DEFINE_STUB_FUNCTION(EncodedJSValue, op_throw)):
2013
2014 2009-10-11  Oliver Hunt  <oliver@apple.com>
2015
2016         Re-enable the JIT.
2017
2018         * wtf/Platform.h:
2019
2020 2009-10-10  Oliver Hunt  <oliver@apple.com>
2021
2022         Reviewed by Maciej Stachowiak.
2023
2024         Support for String.trim(), String.trimLeft() and String.trimRight() methods
2025         https://bugs.webkit.org/show_bug.cgi?id=26590
2026
2027         Implement trim, trimLeft, and trimRight
2028
2029         * runtime/StringPrototype.cpp:
2030         (JSC::isTrimWhitespace):
2031            Our normal string whitespace function does not include U+200B which
2032            is needed for compatibility with mozilla's implementation of trim.
2033            U+200B does not appear to be expected according to spec, however I am
2034            choosing to be lax, and match mozilla behavior so have added this
2035            exception.
2036         (JSC::trimString):
2037
2038 2009-10-09  Geoffrey Garen  <ggaren@apple.com>
2039
2040         Reviewed by Oliver Hunt.
2041
2042         Eliminated some legacy bytecode weirdness.
2043         
2044         Use vPC[x] subscripting instead of ++vPC to access instruction operands.
2045         This is simpler, and often more efficient.
2046
2047         To support this, and to remove use of hard-coded offsets in bytecode and
2048         JIT code generation and dumping, calculate jump offsets from the beginning
2049         of an instruction, rather than the middle or end.
2050         
2051         Also, use OPCODE_LENGTH instead of hard-coded constants for the sizes of
2052         opcodes.
2053         
2054         SunSpider reports no change in JIT mode, and a 1.01x speedup in Interpreter
2055         mode.
2056
2057         * bytecode/CodeBlock.cpp:
2058         (JSC::printConditionalJump):
2059         (JSC::CodeBlock::dump):
2060         * bytecompiler/BytecodeGenerator.cpp:
2061         (JSC::BytecodeGenerator::emitJump):
2062         (JSC::BytecodeGenerator::emitJumpIfTrue):
2063         (JSC::BytecodeGenerator::emitJumpIfFalse):
2064         (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall):
2065         (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply):
2066         (JSC::BytecodeGenerator::emitComplexJumpScopes):
2067         (JSC::BytecodeGenerator::emitJumpScopes):
2068         (JSC::BytecodeGenerator::emitNextPropertyName):
2069         (JSC::BytecodeGenerator::emitCatch):
2070         (JSC::BytecodeGenerator::emitJumpSubroutine):
2071         (JSC::prepareJumpTableForImmediateSwitch):
2072         (JSC::prepareJumpTableForCharacterSwitch):
2073         (JSC::prepareJumpTableForStringSwitch):
2074         (JSC::BytecodeGenerator::endSwitch):
2075         * bytecompiler/Label.h:
2076         (JSC::Label::setLocation):
2077         (JSC::Label::bind):
2078         * interpreter/Interpreter.cpp:
2079         (JSC::Interpreter::resolve):
2080         (JSC::Interpreter::resolveSkip):
2081         (JSC::Interpreter::resolveGlobal):
2082         (JSC::Interpreter::resolveBase):
2083         (JSC::Interpreter::resolveBaseAndProperty):
2084         (JSC::Interpreter::createExceptionScope):
2085         (JSC::Interpreter::privateExecute):
2086         * interpreter/Interpreter.h:
2087         * jit/JIT.cpp:
2088         (JSC::JIT::privateCompile):
2089         * jit/JITArithmetic.cpp:
2090         (JSC::JIT::emit_op_jnless):
2091         (JSC::JIT::emitSlow_op_jnless):
2092         (JSC::JIT::emit_op_jnlesseq):
2093         (JSC::JIT::emitSlow_op_jnlesseq):
2094         (JSC::JIT::emitBinaryDoubleOp):
2095         * jit/JITOpcodes.cpp:
2096         (JSC::JIT::emit_op_jmp):
2097         (JSC::JIT::emit_op_loop):
2098         (JSC::JIT::emit_op_loop_if_less):
2099         (JSC::JIT::emitSlow_op_loop_if_less):
2100         (JSC::JIT::emit_op_loop_if_lesseq):
2101         (JSC::JIT::emitSlow_op_loop_if_lesseq):
2102         (JSC::JIT::emit_op_loop_if_true):
2103         (JSC::JIT::emitSlow_op_loop_if_true):
2104         (JSC::JIT::emit_op_jfalse):
2105         (JSC::JIT::emitSlow_op_jfalse):
2106         (JSC::JIT::emit_op_jtrue):
2107         (JSC::JIT::emitSlow_op_jtrue):
2108         (JSC::JIT::emit_op_jeq_null):
2109         (JSC::JIT::emit_op_jneq_null):
2110         (JSC::JIT::emit_op_jneq_ptr):
2111         (JSC::JIT::emit_op_jsr):
2112         (JSC::JIT::emit_op_next_pname):
2113         (JSC::JIT::emit_op_jmp_scopes):
2114
2115 2009-10-09  Geoffrey Garen  <ggaren@apple.com>
2116
2117         Reviewed by Sam Weinig.
2118
2119         Migrated some code that didn't belong out of Structure.
2120         
2121         SunSpider says maybe 1.03x faster.
2122
2123         * runtime/JSCell.h: Nixed Structure::markAggregate, and made marking of
2124         a Structure's prototype the direct responsility of the object using it.
2125         (Giving Structure a mark function was misleading because it implied that
2126         all live structures get marked during GC, when they don't.)
2127         
2128         * runtime/JSGlobalObject.cpp:
2129         (JSC::markIfNeeded):
2130         (JSC::JSGlobalObject::markChildren): Added code to mark prototypes stored
2131         on the global object. Maybe this wasn't necessary, but now we don't have
2132         to wonder.
2133
2134         * runtime/JSObject.cpp:
2135         (JSC::JSObject::getPropertyNames):
2136         (JSC::JSObject::getOwnPropertyNames):
2137         (JSC::JSObject::getEnumerableNamesFromClassInfoTable):
2138         * runtime/JSObject.h:
2139         (JSC::JSObject::markChildrenDirect):
2140         * runtime/PropertyNameArray.h:
2141         * runtime/Structure.cpp:
2142         * runtime/Structure.h:
2143         (JSC::Structure::setEnumerationCache):
2144         (JSC::Structure::enumerationCache): Moved property name gathering code
2145         from Structure to JSObject because having a Structure iterate its JSObject
2146         was a layering violation. A JSObject is implemented using a Structure; not
2147         the other way around.
2148
2149 2009-10-09  Mark Rowe  <mrowe@apple.com>
2150
2151         Attempt to fix the GTK release build.
2152
2153         * GNUmakefile.am: Include Grammar.cpp in release builds now that
2154         AllInOneFile.cpp is gone.
2155
2156 2009-10-09  Gabor Loki  <loki@inf.u-szeged.hu>
2157
2158         Rubber-stamped by Eric Seidel.
2159
2160         Add ARM JIT support for Gtk port (disabled by default)
2161         https://bugs.webkit.org/show_bug.cgi?id=30228
2162
2163         * GNUmakefile.am:
2164
2165 2009-10-08  Geoffrey Garen  <ggaren@apple.com>
2166
2167         Tiger build fix: added a few more variable initializations.
2168
2169         * runtime/StringPrototype.cpp:
2170         (JSC::stringProtoFuncReplace):
2171         (JSC::stringProtoFuncSearch):
2172
2173 2009-10-08  Geoffrey Garen  <ggaren@apple.com>
2174
2175         Qt build fix: added missing #include.
2176
2177         * jsc.cpp:
2178
2179 2009-10-08  Geoffrey Garen  <ggaren@apple.com>
2180
2181         Tiger build fix: initialize variable whose initialization the compiler
2182         can't otherwise figure out.
2183
2184         * runtime/RegExpObject.cpp:
2185         (JSC::RegExpObject::match):
2186
2187 2009-10-08  Geoffrey Garen  <ggaren@apple.com>
2188
2189         Windows build fix: updated exports.
2190
2191         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2192         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
2193
2194 2009-10-08  Geoffrey Garen  <ggaren@apple.com>
2195
2196         Tiger build fix: fixed file name case.
2197
2198         * JavaScriptCore.xcodeproj/project.pbxproj:
2199
2200 2009-10-08  Geoffrey Garen  <ggaren@apple.com>
2201
2202         Reviewed by Maciej Stachowiak.
2203
2204         At long last, I pronounce the death of AllInOneFile.cpp.
2205         
2206         SunSpider reports a 1.01x speedup.
2207
2208         * AllInOneFile.cpp: Removed.
2209         * GNUmakefile.am:
2210         * JavaScriptCore.exp:
2211         * JavaScriptCore.gypi:
2212         * JavaScriptCore.xcodeproj/project.pbxproj: Added missing project files
2213         to compilation stages.
2214
2215         * parser/Grammar.y:
2216         * parser/Lexer.cpp:
2217         * parser/Lexer.h:
2218         (JSC::jscyylex):
2219         * runtime/ArrayConstructor.cpp:
2220         (JSC::constructArrayWithSizeQuirk):
2221         * runtime/Collector.h:
2222         * runtime/JSCell.cpp:
2223         (JSC::JSCell::operator new):
2224         * runtime/JSCell.h:
2225         (JSC::JSCell::operator new):
2226         * runtime/JSGlobalObject.cpp:
2227         (JSC::JSGlobalObject::operator new):
2228         * runtime/JSNumberCell.h:
2229         (JSC::JSNumberCell::operator new):
2230         * runtime/JSString.cpp:
2231         * runtime/JSString.h:
2232         (JSC::jsString):
2233         (JSC::jsSubstring):
2234         (JSC::jsOwnedString):
2235         * runtime/RegExpConstructor.cpp:
2236         * runtime/RegExpConstructor.h:
2237         (JSC::RegExpConstructorPrivate::RegExpConstructorPrivate):
2238         (JSC::RegExpConstructorPrivate::lastOvector):
2239         (JSC::RegExpConstructorPrivate::tempOvector):
2240         (JSC::RegExpConstructorPrivate::changeLastOvector):
2241         (JSC::RegExpConstructor::performMatch):
2242         * runtime/StringPrototype.cpp:
2243         (JSC::stringProtoFuncMatch):
2244         * yarr/RegexJIT.cpp:
2245         * yarr/RegexJIT.h:
2246         (JSC::Yarr::executeRegex): Inlined a few things that Shark said
2247         were hot, on the presumption that AllInOneFile.cpp used to inline them
2248         automatically.
2249
2250 2009-10-08  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
2251
2252         Reviewed by Gavin Barraclough.
2253
2254         Fix for JIT'ed op_call instructions (evals, constructs, etc.)
2255         when !ENABLE(JIT_OPTIMIZE_CALL) && USE(JSVALUE32_64)
2256
2257         https://bugs.webkit.org/show_bug.cgi?id=30201
2258
2259         * jit/JITCall.cpp:
2260         (JSC::JIT::compileOpCall):
2261
2262 2009-10-07  Geoffrey Garen  <ggaren@apple.com>
2263
2264         Windows build fix: removed no longer exported symbol.
2265
2266         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2267         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
2268
2269 2009-10-07  Geoffrey Garen  <ggaren@apple.com>
2270
2271         Reviewed by Oliver Hunt.
2272
2273         Fixed <rdar://problem/5751979> Database code takes JSLock on secondary
2274         thread, permanently slowing down JavaScript
2275         
2276         Removed the optional lock from Heap::protect, Heap::unprotect, and friends,
2277         since WebCore no longer uses it.
2278
2279         * JavaScriptCore.exp:
2280         * runtime/Collector.cpp:
2281         (JSC::Heap::protect):
2282         (JSC::Heap::unprotect):
2283         (JSC::Heap::markProtectedObjects):
2284         (JSC::Heap::protectedGlobalObjectCount):
2285         (JSC::Heap::protectedObjectCount):
2286         (JSC::Heap::protectedObjectTypeCounts):
2287         * runtime/Collector.h:
2288
2289 2009-10-07  Zoltan Horvath  <zoltan@webkit.org>
2290
2291         Reviewed by Darin Adler.
2292
2293         Allow custom memory allocation control for JavaScriptCore's IdentifierArena
2294         https://bugs.webkit.org/show_bug.cgi?id=30158
2295
2296         Inherits IdentifierArena class from FastAllocBase because it has been
2297         instantiated by 'new' in JavaScriptCore/parser/ParserArena.cpp:36.
2298
2299         * parser/ParserArena.h:
2300
2301 2009-10-07  Adam Roben  <aroben@apple.com>
2302
2303         Export DateInstance::info in a way that works on Windows
2304
2305         Fixes <http://webkit.org/b/30171>
2306         fast/dom/Window/window-postmessage-clone.html fails on Windows
2307
2308         Reviewed by Anders Carlsson.
2309
2310         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2311         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
2312         Removed the export of DateInstance::info from here.
2313
2314         * runtime/DateInstance.h: Use JS_EXPORTDATA to export
2315         DateInstance::info, which is the required way of exporting data on
2316         Windows.
2317
2318 2009-10-07  Jørgen Lind  <jorgen.lind@nokia.com>
2319
2320         Reviewed by Simon Hausmann.
2321
2322         When enabling or disabling the JIT through .qmake.cache, make sure
2323         to also toggle ENABLE_YARR_JIT.
2324
2325         * JavaScriptCore.pri:
2326
2327 2009-10-06  Priit Laes  <plaes@plaes.org>
2328
2329         Reviewed by Gavin Barraclough.
2330
2331         Linking fails with "relocation R_X86_64_PC32 against symbol
2332         `cti_vm_throw'"
2333         https://bugs.webkit.org/show_bug.cgi?id=28422
2334
2335         * jit/JITStubs.cpp:
2336         Mark cti_vm_throw symbol as PLT-indirect symbol, so it doesn't end up
2337         in text segment causing relocation errors on amd64 architecture.
2338         Introduced new define SYMBOL_STRING_RELOCATION for such symbols.
2339
2340 2009-10-06  Oliver Hunt  <oliver@apple.com>
2341
2342         Windows linking fix
2343
2344         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2345         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
2346
2347 2009-10-06  Oliver Hunt  <oliver@apple.com>
2348
2349         Reviewed by NOBODY (build fix).
2350
2351         Windows build fix.
2352
2353         * runtime/DateInstance.cpp:
2354
2355 2009-10-05  Oliver Hunt  <oliver@apple.com>
2356
2357         Reviewed by Gavin Barraclough.
2358
2359         It should be possible to post (clone) built-in JS objects to Workers
2360         https://bugs.webkit.org/show_bug.cgi?id=22878
2361
2362         Expose helpers to throw correct exceptions during object graph walk
2363         used for cloning and add a helper function to create Date instances
2364         without going through the JS Date constructor function.
2365
2366         * JavaScriptCore.exp:
2367         * JavaScriptCore.xcodeproj/project.pbxproj:
2368         * runtime/DateInstance.cpp:
2369         (JSC::DateInstance::DateInstance):
2370         * runtime/DateInstance.h:
2371         * runtime/ExceptionHelpers.cpp:
2372         (JSC::createTypeError):
2373         * runtime/ExceptionHelpers.h:
2374
2375 2009-10-06  David Levin  <levin@chromium.org>
2376
2377         Reviewed by Oliver Hunt.
2378
2379         StringImpl needs a method to get an instance for another thread which doesn't copy the underlying buffer.
2380         https://bugs.webkit.org/show_bug.cgi?id=30095
2381
2382         * wtf/CrossThreadRefCounted.h:
2383         Removed an unused function and assert improvement.
2384         (WTF::CrossThreadRefCounted::isOwnedByCurrentThread): Moved out common code from asserts.
2385         (WTF::CrossThreadRefCounted::ref): Changed assert to use the common method.
2386         (WTF::CrossThreadRefCounted::deref): Changed assert to use the common method.
2387         (WTF::CrossThreadRefCounted::crossThreadCopy): Since this includes a potentially
2388         non-threadsafe operation, add an assert that the class is owned by the current thread.
2389
2390 2009-10-05  Kevin Ollivier  <kevino@theolliviers.com>
2391
2392         wx build fix. Add Symbian files to the list of excludes.
2393
2394         * wscript:
2395
2396 2009-10-05  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
2397
2398         Reviewed by Simon Hausmann.
2399
2400         [Qt] Remove precompiled header from JavaScriptCore compilation to
2401         prevent qmake warning during autonomous compilation.
2402         https://bugs.webkit.org/show_bug.cgi?id=30069
2403
2404         * JavaScriptCore.pro:
2405
2406 2009-10-02  Geoffrey Garen  <ggaren@apple.com>
2407
2408         Reviewed by Sam Weinig.
2409
2410         Removed the concept of a "fast access cutoff" in arrays, because it
2411         punished some patterns of array access too much, and made things too
2412         complex for inlining in some cases.
2413         
2414         1.3% speedup on SunSpider.
2415
2416         * jit/JITOpcodes.cpp:
2417         (JSC::JIT::emitSlow_op_get_by_val):
2418         (JSC::JIT::emitSlow_op_put_by_val):
2419         * jit/JITPropertyAccess.cpp:
2420         (JSC::JIT::emit_op_get_by_val):
2421         (JSC::JIT::emitSlow_op_get_by_val):
2422         (JSC::JIT::emit_op_put_by_val):
2423         (JSC::JIT::emitSlow_op_put_by_val):
2424         * jit/JITStubs.cpp:
2425         * jit/JITStubs.h:
2426         (JSC::): Check m_vectorLength instead of m_fastAccessCutoff when
2427         getting / putting from / to an array. Inline putting past the end of
2428         the array.
2429
2430         * runtime/JSArray.cpp:
2431         (JSC::JSArray::JSArray):
2432         (JSC::JSArray::getOwnPropertySlot):
2433         (JSC::JSArray::getOwnPropertyDescriptor):
2434         (JSC::JSArray::put):
2435         (JSC::JSArray::putSlowCase):
2436         (JSC::JSArray::deleteProperty):
2437         (JSC::JSArray::getOwnPropertyNames):
2438         (JSC::JSArray::increaseVectorLength):
2439         (JSC::JSArray::setLength):
2440         (JSC::JSArray::pop):
2441         (JSC::JSArray::push):
2442         (JSC::JSArray::sort):
2443         (JSC::JSArray::fillArgList):
2444         (JSC::JSArray::copyToRegisters):
2445         (JSC::JSArray::compactForSorting):
2446         (JSC::JSArray::checkConsistency):
2447         * runtime/JSArray.h:
2448         (JSC::JSArray::canGetIndex):
2449         (JSC::JSArray::canSetIndex):
2450         (JSC::JSArray::setIndex):
2451         (JSC::JSArray::markChildrenDirect): Removed m_fastAccessCutoff, and
2452         replaced with checks for JSValue() to detect reads and writes from / to
2453         uninitialized parts of the array.
2454
2455 2009-10-02  Jonni Rainisto  <jonni.rainisto@nokia.com>
2456
2457         Reviewed by Darin Adler.
2458
2459         Math.random() gives too low values on Win32 when _CRT_RAND_S is not defined
2460         https://bugs.webkit.org/show_bug.cgi?id=29956
2461
2462         * wtf/RandomNumber.cpp:
2463         (WTF::randomNumber): Added PLATFORM(WIN_OS) to handle 15bit rand()
2464
2465 2009-10-02  Geoffrey Garen  <ggaren@apple.com>
2466
2467         Reviewed by Sam Weinig.
2468
2469         Take one branch instead of two to test for JSValue().
2470         
2471         1.1% SunSpider speedup.
2472
2473         * jit/JITCall.cpp:
2474         (JSC::JIT::compileOpCall):
2475         * jit/JITOpcodes.cpp:
2476         (JSC::JIT::emit_op_to_jsnumber):
2477         (JSC::JIT::emit_op_create_arguments):
2478         * jit/JITPropertyAccess.cpp:
2479         (JSC::JIT::emitSlow_op_get_by_val):
2480         (JSC::JIT::emit_op_put_by_val): Test for the empty value tag, instead
2481         of testing for the cell tag with a 0 payload.
2482
2483         * runtime/JSValue.cpp:
2484         (JSC::JSValue::description): Added support for dumping the new empty value,
2485         and deleted values, in debug builds.
2486
2487         * runtime/JSValue.h:
2488         (JSC::JSValue::JSValue()): Construct JSValue() with the empty value tag.
2489
2490         (JSC::JSValue::JSValue(JSCell*)): Convert null pointer to the empty value
2491         tag, to avoid having two different c++ versions of null / empty.
2492
2493         (JSC::JSValue::operator bool): Test for the empty value tag, instead
2494         of testing for the cell tag with a 0 payload.
2495
2496 2009-10-02  Steve Falkenburg  <sfalken@apple.com>
2497
2498         Reviewed by Mark Rowe.
2499
2500         <https://bugs.webkit.org/show_bug.cgi?id=29989>
2501         Safari version number shouldn't be exposed in WebKit code
2502         
2503         For a WebKit version of 532.3.4:
2504         Product version is: 5.32.3.4 (was 4.0.3.0)
2505         File version is: 5.32.3.4 (was 4.532.3.4)
2506
2507         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc:
2508
2509 2009-10-02  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>
2510
2511         Rubber-stamped by Simon Hausmann.
2512
2513         Fix the Qt on Mac OS X build.
2514
2515         * wtf/FastMalloc.cpp:
2516
2517 2009-10-02  Jørgen Lind  <jorgen.lind@nokia.com>
2518
2519         Reviewed by Simon Hausmann.
2520
2521         Allow enabling and disabling of the JIT through a qmake variable.
2522
2523         Qt's configure may set this variable through .qmake.cache if a
2524         commandline option is given and/or the compile test for hwcap.h
2525         failed/succeeded.
2526
2527         * JavaScriptCore.pri:
2528
2529 2009-10-01  Mark Rowe  <mrowe@apple.com>
2530
2531         Fix the Tiger build.  Don't unconditionally enable 3D canvas as it is not supported on Tiger.
2532
2533         * Configurations/FeatureDefines.xcconfig:
2534
2535 2009-10-01  Yongjun Zhang  <yongjun.zhang@nokia.com>
2536
2537         Reviewed by Darin Adler.
2538
2539         https://bugs.webkit.org/show_bug.cgi?id=29187
2540
2541         Don't inline ~ListRefPtr() to work around winscw compiler forward declaration
2542         bug regarding templated classes.
2543
2544         The compiler bug is reported at:
2545         https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=9812
2546
2547         The change will be reverted when the above bug is fixed in winscw compiler.
2548
2549         * wtf/ListRefPtr.h:
2550         (WTF::::~ListRefPtr):
2551
2552 2009-10-01  Zoltan Horvath  <zoltan@webkit.org>
2553
2554         Reviewed by Simon Hausmann.
2555
2556         [Qt] Allow custom memory allocation control for the whole JavaScriptCore
2557         https://bugs.webkit.org/show_bug.cgi?id=27029
2558
2559         Since in JavaScriptCore almost every class which has been instantiated by operator new is
2560         inherited from FastAllocBase (bug #20422), we disable customizing global operator new for the Qt-port
2561         when USE_SYSTEM_MALLOC=0.
2562
2563         Add #include <unistd.h> to FastMalloc.cpp because it's used by TCMalloc_PageHeap::scavengerThread().
2564         (It's needed for the functionality of TCmalloc.)
2565
2566         Add TCSystemAlloc.cpp to JavaScriptCore.pri if USE_SYSTEM_MALLOC is disabled.
2567
2568         * JavaScriptCore.pri:
2569         * wtf/FastMalloc.cpp:
2570         (WTF::sleep):
2571         * wtf/FastMalloc.h:
2572
2573 2009-09-30  Gabor Loki  <loki@inf.u-szeged.hu>
2574
2575         Reviewed by George Staikos.
2576
2577         Defines two pseudo-platforms for ARM and Thumb-2 instruction set.
2578         https://bugs.webkit.org/show_bug.cgi?id=29122
2579
2580         Introduces WTF_PLATFORM_ARM_TRADITIONAL and WTF_PLATFORM_ARM_THUMB2
2581         macros on ARM platforms. The PLATFORM(ARM_THUMB2) should be used
2582         when Thumb-2 instruction set is the required target. The
2583         PLATFORM(ARM_TRADITIONAL) is for generic ARM instruction set. In
2584         case where the code is common the PLATFORM(ARM) have to be used.
2585
2586         Modified by George Wright  <gwright@rim.com> to correctly work
2587         with the RVCT-defined __TARGET_ARCH_ARM and __TARGET_ARCH_THUMB
2588         compiler macros, as well as adding readability changes.
2589
2590         * wtf/Platform.h:
2591
2592 2009-09-30  Oliver Hunt  <oliver@apple.com>
2593
2594         Reviewed by Geoff Garen.
2595
2596         Devirtualise array toString conversion
2597
2598         Tweak the implementation of Array.prototype.toString to have a fast path
2599         when acting on a true JSArray.
2600
2601         * runtime/ArrayPrototype.cpp:
2602         (JSC::arrayProtoFuncToString):
2603
2604 2009-09-30  Csaba Osztrogonac  <oszi@inf.u-szeged.hu>
2605
2606         Reviewed by Geoffrey Garen.
2607
2608         Buildfix for platforms using JSVALUE32.
2609         https://bugs.webkit.org/show_bug.cgi?id=29915
2610
2611         After http://trac.webkit.org/changeset/48905 the build broke in JSVALUE32 case.
2612         Also removed unreachable code.
2613
2614         * jit/JITArithmetic.cpp:
2615         (JSC::JIT::emit_op_add):
2616          - Declaration of "OperandTypes types" moved before first use.
2617          - Typos fixed: dst modified to result, regT2 added.
2618          - Unreachable code removed.
2619         (JSC::JIT::emitSlow_op_add):
2620          - Missing declaration of "OperandTypes types" added.
2621
2622 2009-09-30  Janne Koskinen  <janne.p.koskinen@digia.com> 
2623
2624         Reviewed by Simon Hausmann.
2625
2626         Reduce heap size on Symbian from 64MB to 8MB.
2627
2628         This is not a perfect fix, it requires more fine tuning.
2629         But this makes it possible again to debug in the emulator,
2630         which is more important in order to be able to fix other
2631         run-time issues.
2632
2633         * runtime/Collector.h:
2634
2635 2009-09-30  Janne Koskinen  <janne.p.koskinen@digia.com> 
2636
2637         Reviewed by Simon Hausmann.
2638
2639         Fix CRASH() macro for Symbian build.
2640
2641         * wtf/Assertions.h: Added missing }
2642
2643 2009-09-29  Geoffrey Garen  <ggaren@apple.com>
2644
2645         Reviewed by Gavin Barraclough.
2646
2647         Inlined a few math operations.
2648         
2649         ~1% SunSpider speedup.
2650
2651         * jit/JIT.h:
2652         * jit/JITArithmetic.cpp:
2653         (JSC::JIT::compileBinaryArithOpSlowCase):
2654         (JSC::JIT::emitSlow_op_add):
2655         (JSC::JIT::emitSlow_op_mul):
2656         (JSC::JIT::emit_op_sub):
2657         (JSC::JIT::emitSlow_op_sub): Don't take a stub call when operating on
2658         a constant int and a double.
2659
2660 2009-09-28  Oliver Hunt  <oliver@apple.com>
2661
2662         Reviewed by Gavin Barraclough.
2663
2664         Tidy up codeblock sampler
2665         https://bugs.webkit.org/show_bug.cgi?id=29836
2666
2667         Some rather simple refactoring of codeblock sampler so that
2668         it's easier for us to use it to find problems in non-jsc
2669         environments
2670
2671         * JavaScriptCore.exp:
2672         * bytecode/SamplingTool.h:
2673         * debugger/Debugger.cpp:
2674         (JSC::evaluateInGlobalCallFrame):
2675         * debugger/DebuggerCallFrame.cpp:
2676         (JSC::DebuggerCallFrame::evaluate):
2677         * interpreter/Interpreter.cpp:
2678         (JSC::Interpreter::Interpreter):
2679         (JSC::Interpreter::execute):
2680         (JSC::Interpreter::privateExecute):
2681         (JSC::Interpreter::enableSampler):
2682         (JSC::Interpreter::dumpSampleData):
2683         (JSC::Interpreter::startSampling):
2684         (JSC::Interpreter::stopSampling):
2685         * interpreter/Interpreter.h:
2686         (JSC::Interpreter::sampler):
2687         * jit/JIT.h:
2688         * jsc.cpp:
2689         (runWithScripts):
2690         * runtime/Completion.cpp:
2691         (JSC::checkSyntax):
2692         (JSC::evaluate):
2693         * runtime/Executable.h:
2694         (JSC::EvalExecutable::EvalExecutable):
2695         (JSC::ProgramExecutable::create):
2696         (JSC::ProgramExecutable::ProgramExecutable):
2697         * runtime/JSGlobalData.cpp:
2698         (JSC::JSGlobalData::startSampling):
2699         (JSC::JSGlobalData::stopSampling):
2700         (JSC::JSGlobalData::dumpSampleData):
2701         * runtime/JSGlobalData.h:
2702         * runtime/JSGlobalObjectFunctions.cpp:
2703         (JSC::globalFuncEval):
2704
2705 2009-09-29  Jeremy Orlow  <jorlow@chromium.org>
2706
2707         Reviewed by Dimitri Glazkov.
2708
2709         Add GYP generated files to svn:ignore
2710         https://bugs.webkit.org/show_bug.cgi?id=29895
2711
2712         The following files are generated by JavaScriptCore's GYP file and should be ignored:
2713
2714         pcre.mk
2715         wtf.scons
2716         wtf.mk
2717         SConstruct
2718         wtf_config.scons
2719         wtf_config.mk
2720         pcre.scons
2721
2722         * JavaScriptCore.gyp: Changed property svn:ignore.
2723
2724 2009-09-29  Geoffrey Garen  <ggaren@apple.com>
2725
2726         Reviewed by Sam Weinig.
2727
2728         Standardized an optimization for adding non-numbers.
2729         
2730         SunSpider says maybe a tiny speedup.
2731
2732         * jit/JITArithmetic.cpp:
2733         (JSC::JIT::emit_op_add):
2734         (JSC::JIT::emitSlow_op_add):
2735
2736 2009-09-29  Geoffrey Garen  <ggaren@apple.com>
2737
2738         Windows build fix: export a new symbol.
2739
2740         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2741         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
2742
2743 2009-09-28  Geoffrey Garen  <ggaren@apple.com>
2744
2745         Reviewed by Sam Weinig.
2746
2747         Removed virtual destructor from JSGlobalObjectData to eliminate pointer
2748         fix-ups when accessing JSGlobalObject::d.
2749         
2750         Replaced with an explicit destructor function pointer.
2751         
2752         6% speedup on bench-alloc-nonretained.js.
2753
2754         * JavaScriptCore.exp:
2755         * runtime/JSGlobalObject.cpp:
2756         (JSC::JSGlobalObject::~JSGlobalObject):
2757         (JSC::JSGlobalObject::destroyJSGlobalObjectData):
2758         * runtime/JSGlobalObject.h:
2759         (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
2760         (JSC::JSGlobalObject::JSGlobalObject):
2761
2762 2009-09-29  Janne Koskinen  <janne.p.koskinen@digia.com>
2763
2764         Reviewed by David Kilzer.
2765
2766         [Qt] Assert messages prints visible in Symbian
2767         https://bugs.webkit.org/show_bug.cgi?id=29808
2768
2769         Asserts use vprintf to print the messages to stderr.
2770         In Symbian Open C it is not possible to see stderr so
2771         I routed the messages to stdout instead.
2772
2773         * wtf/Assertions.cpp:
2774
2775 2009-09-29  Janne Koskinen  <janne.p.koskinen@digia.com>
2776
2777         Reviewed by Darin Adler.
2778
2779         [Qt] Symbian CRASH macro implementation
2780
2781         Added Symbian specific crash macro that
2782         stops to crash line if JIT debugging is used.
2783         Additional differentiation of access violation
2784         (KERN-EXEC 3) and CRASH panic.
2785
2786         * wtf/Assertions.h:
2787
2788 2009-09-28  Mark Rowe  <mrowe@apple.com>
2789
2790         Fix the PowerPC build.
2791
2792         * JavaScriptCore.exp:
2793
2794 2009-09-28  Mark Rowe  <mrowe@apple.com>
2795
2796         Reviewed by Gavin Barraclough.
2797
2798         <rdar://problem/7195704> JavaScriptCore fails to mark registers when built for x86_64 using LLVM GCC.
2799
2800         * runtime/Collector.cpp:
2801         (JSC::Heap::markCurrentThreadConservatively): Force jmp_buf to use the appropriate alignment for a pointer
2802         to ensure that we correctly interpret the contents of registers during marking.
2803
2804 2009-09-28  Geoffrey Garen  <ggaren@apple.com>
2805
2806         Windows build fix: added new exports.
2807
2808         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2809         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
2810
2811 2009-09-28  Geoffrey Garen  <ggaren@apple.com>
2812
2813         Windows build fix: removed exports that no longer exist.
2814
2815         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2816         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
2817
2818 2009-09-28  Geoffrey Garen  <ggaren@apple.com>
2819
2820         Reviewed by Darin Adler.
2821
2822         NotNullPassRefPtr: smart pointer optimized for passing references that are not null
2823         https://bugs.webkit.org/show_bug.cgi?id=29822
2824         
2825         Added NotNullPassRefPtr, and deployed it in all places that initialize
2826         JavaScript objects.
2827         
2828         2.2% speedup on bench-allocate-nonretained.js.
2829
2830         * API/JSCallbackConstructor.cpp:
2831         (JSC::JSCallbackConstructor::JSCallbackConstructor):
2832         * API/JSCallbackConstructor.h:
2833         * API/JSCallbackObject.h:
2834         * API/JSCallbackObjectFunctions.h:
2835         (JSC::JSCallbackObject::JSCallbackObject):
2836         * JavaScriptCore.exp:
2837         * bytecode/CodeBlock.h:
2838         (JSC::CodeBlock::addFunctionDecl):
2839         (JSC::CodeBlock::addFunctionExpr):
2840         * runtime/ArrayConstructor.cpp:
2841         (JSC::ArrayConstructor::ArrayConstructor):
2842         * runtime/ArrayConstructor.h:
2843         * runtime/ArrayPrototype.cpp:
2844         (JSC::ArrayPrototype::ArrayPrototype):
2845         * runtime/ArrayPrototype.h:
2846         * runtime/BooleanConstructor.cpp:
2847         (JSC::BooleanConstructor::BooleanConstructor):
2848         * runtime/BooleanConstructor.h:
2849         * runtime/BooleanObject.cpp:
2850         (JSC::BooleanObject::BooleanObject):
2851         * runtime/BooleanObject.h:
2852         * runtime/BooleanPrototype.cpp:
2853         (JSC::BooleanPrototype::BooleanPrototype):
2854         * runtime/BooleanPrototype.h:
2855         * runtime/DateConstructor.cpp:
2856         (JSC::DateConstructor::DateConstructor):
2857         * runtime/DateConstructor.h:
2858         * runtime/DateInstance.cpp:
2859         (JSC::DateInstance::DateInstance):
2860         * runtime/DateInstance.h:
2861         * runtime/DatePrototype.cpp:
2862         (JSC::DatePrototype::DatePrototype):
2863         * runtime/DatePrototype.h:
2864         * runtime/ErrorConstructor.cpp:
2865         (JSC::ErrorConstructor::ErrorConstructor):
2866         * runtime/ErrorConstructor.h:
2867         * runtime/ErrorInstance.cpp:
2868         (JSC::ErrorInstance::ErrorInstance):
2869         * runtime/ErrorInstance.h:
2870         * runtime/ErrorPrototype.cpp:
2871         (JSC::ErrorPrototype::ErrorPrototype):
2872         * runtime/ErrorPrototype.h:
2873         * runtime/FunctionConstructor.cpp:
2874         (JSC::FunctionConstructor::FunctionConstructor):
2875         * runtime/FunctionConstructor.h:
2876         * runtime/FunctionPrototype.cpp:
2877         (JSC::FunctionPrototype::FunctionPrototype):
2878         * runtime/FunctionPrototype.h:
2879         * runtime/GlobalEvalFunction.cpp:
2880         (JSC::GlobalEvalFunction::GlobalEvalFunction):
2881         * runtime/GlobalEvalFunction.h:
2882         * runtime/InternalFunction.cpp:
2883         (JSC::InternalFunction::InternalFunction):
2884         * runtime/InternalFunction.h:
2885         (JSC::InternalFunction::InternalFunction):
2886         * runtime/JSActivation.cpp:
2887         (JSC::JSActivation::JSActivation):
2888         * runtime/JSActivation.h:
2889         (JSC::JSActivation::JSActivationData::JSActivationData):
2890         * runtime/JSArray.cpp:
2891         (JSC::JSArray::JSArray):
2892         * runtime/JSArray.h:
2893         * runtime/JSByteArray.cpp:
2894         (JSC::JSByteArray::JSByteArray):
2895         * runtime/JSByteArray.h:
2896         * runtime/JSFunction.cpp:
2897         (JSC::JSFunction::JSFunction):
2898         * runtime/JSFunction.h:
2899         * runtime/JSGlobalObject.h:
2900         (JSC::JSGlobalObject::JSGlobalObject):
2901         * runtime/JSONObject.h:
2902         (JSC::JSONObject::JSONObject):
2903         * runtime/JSObject.h:
2904         (JSC::JSObject::JSObject):
2905         (JSC::JSObject::setStructure):
2906         * runtime/JSVariableObject.h:
2907         (JSC::JSVariableObject::JSVariableObject):
2908         * runtime/JSWrapperObject.h:
2909         (JSC::JSWrapperObject::JSWrapperObject):
2910         * runtime/MathObject.cpp:
2911         (JSC::MathObject::MathObject):
2912         * runtime/MathObject.h:
2913         * runtime/NativeErrorConstructor.cpp:
2914         (JSC::NativeErrorConstructor::NativeErrorConstructor):
2915         * runtime/NativeErrorConstructor.h:
2916         * runtime/NativeErrorPrototype.cpp:
2917         (JSC::NativeErrorPrototype::NativeErrorPrototype):
2918         * runtime/NativeErrorPrototype.h:
2919         * runtime/NumberConstructor.cpp:
2920         (JSC::NumberConstructor::NumberConstructor):
2921         * runtime/NumberConstructor.h:
2922         * runtime/NumberObject.cpp:
2923         (JSC::NumberObject::NumberObject):
2924         * runtime/NumberObject.h:
2925         * runtime/NumberPrototype.cpp:
2926         (JSC::NumberPrototype::NumberPrototype):
2927         * runtime/NumberPrototype.h:
2928         * runtime/ObjectConstructor.cpp:
2929         (JSC::ObjectConstructor::ObjectConstructor):
2930         * runtime/ObjectConstructor.h:
2931         * runtime/ObjectPrototype.cpp:
2932         (JSC::ObjectPrototype::ObjectPrototype):
2933         * runtime/ObjectPrototype.h:
2934         * runtime/PropertyNameArray.h:
2935         (JSC::PropertyNameArrayData::setCachedPrototypeChain):
2936         * runtime/PrototypeFunction.cpp:
2937         (JSC::PrototypeFunction::PrototypeFunction):
2938         * runtime/PrototypeFunction.h:
2939         * runtime/RegExpConstructor.cpp:
2940         (JSC::RegExpConstructor::RegExpConstructor):
2941         * runtime/RegExpConstructor.h:
2942         * runtime/RegExpObject.cpp:
2943         (JSC::RegExpObject::RegExpObject):
2944         * runtime/RegExpObject.h:
2945         (JSC::RegExpObject::RegExpObjectData::RegExpObjectData):
2946         * runtime/RegExpPrototype.cpp:
2947         (JSC::RegExpPrototype::RegExpPrototype):
2948         * runtime/RegExpPrototype.h:
2949         * runtime/StringConstructor.cpp:
2950         (JSC::StringConstructor::StringConstructor):
2951         * runtime/StringConstructor.h:
2952         * runtime/StringObject.cpp:
2953         (JSC::StringObject::StringObject):
2954         * runtime/StringObject.h:
2955         * runtime/StringObjectThatMasqueradesAsUndefined.h:
2956         (JSC::StringObjectThatMasqueradesAsUndefined::StringObjectThatMasqueradesAsUndefined):
2957         * runtime/StringPrototype.cpp:
2958         (JSC::StringPrototype::StringPrototype):
2959         * runtime/StringPrototype.h:
2960         * wtf/PassRefPtr.h:
2961         (WTF::NotNullPassRefPtr::NotNullPassRefPtr):
2962         (WTF::NotNullPassRefPtr::~NotNullPassRefPtr):
2963         (WTF::NotNullPassRefPtr::get):
2964         (WTF::NotNullPassRefPtr::clear):
2965         (WTF::NotNullPassRefPtr::releaseRef):
2966         (WTF::NotNullPassRefPtr::operator*):
2967         (WTF::NotNullPassRefPtr::operator->):
2968         (WTF::NotNullPassRefPtr::operator!):
2969         (WTF::NotNullPassRefPtr::operator UnspecifiedBoolType):
2970         * wtf/RefPtr.h:
2971         (WTF::RefPtr::RefPtr):
2972         (WTF::operator==):
2973
2974 2009-09-28  Oliver Hunt  <oliver@apple.com>
2975
2976         Reviewed by Geoff Garen.
2977
2978         Hard dependency on SSE2 instruction set with JIT
2979         https://bugs.webkit.org/show_bug.cgi?id=29779
2980
2981         Add floating point support checks to op_jfalse and op_jtrue, and
2982         fix the logic for the slow case of op_add
2983
2984         * jit/JITArithmetic.cpp:
2985         (JSC::JIT::emitSlow_op_add):
2986         * jit/JITOpcodes.cpp:
2987         (JSC::JIT::emit_op_jfalse):
2988         (JSC::JIT::emit_op_jtrue):
2989
2990 2009-09-28  Yaar Schnitman  <yaar@chromium.org>
2991
2992         Reviewed by Dimitri Glazkov.
2993
2994         Chromium port - recognize we are being built independently
2995         of chromium and look for dependencies under webkit/chromium rather
2996         than chromium/src.
2997
2998         https://bugs.webkit.org/show_bug.cgi?id=29722
2999
3000         * JavaScriptCore.gyp/JavaScriptCore.gyp:
3001
3002 2009-09-28  Jakub Wieczorek  <faw217@gmail.com>
3003
3004         Reviewed by Simon Hausmann.
3005
3006         [Qt] Implement XSLT support with QtXmlPatterns.
3007         https://bugs.webkit.org/show_bug.cgi?id=28303
3008
3009         * wtf/Platform.h: Add a WTF_USE_QXMLQUERY #define.
3010
3011 2009-09-28  Gabor Loki  <loki@inf.u-szeged.hu>
3012
3013         Reviewed by Simon Hausmann.
3014
3015         Remove __clear_cache which is an internal function of GCC
3016         https://bugs.webkit.org/show_bug.cgi?id=28886
3017
3018         Although __clear_cache is exported from GCC, this is an internal
3019         function. GCC makes no promises about it.
3020
3021         * jit/ExecutableAllocator.h:
3022         (JSC::ExecutableAllocator::cacheFlush):
3023
3024 2009-09-28  Sam Weinig  <sam@webkit.org>
3025
3026         Reviewed by Oliver Hunt.
3027
3028         Fix an absolute path to somewhere in Oliver's machine to a relative path
3029         for derived JSONObject.lut.h.
3030
3031         * JavaScriptCore.xcodeproj/project.pbxproj:
3032
3033 2009-09-28  Joerg Bornemann  <joerg.bornemann@nokia.com>
3034
3035         Reviewed by Simon Hausmann.
3036
3037         Add ARM version detection for Windows CE.
3038
3039         * wtf/Platform.h:
3040
3041 2009-09-26  Yongjun Zhang  <yongjun.zhang@nokia.com>
3042
3043         Reviewed by Simon Hausmann.
3044
3045         Add MarkStackSymbian.cpp to build JavascriptCore for Symbian.
3046
3047         Re-use Windows shrinkAllocation implementation because Symbian doesn't
3048         support releasing part of memory region.
3049         
3050         Use fastMalloc and fastFree to implement allocateStack and releaseStack
3051         for Symbian port.
3052
3053         * JavaScriptCore.pri:
3054         * runtime/MarkStack.h:
3055         (JSC::MarkStack::MarkStackArray::shrinkAllocation):
3056         * runtime/MarkStackSymbian.cpp: Added.
3057         (JSC::MarkStack::initializePagesize):
3058         (JSC::MarkStack::allocateStack):
3059         (JSC::MarkStack::releaseStack):
3060
3061 2009-09-25  Gabor Loki  <loki@inf.u-szeged.hu>
3062
3063         Reviewed by Gavin Barraclough.
3064
3065         Fix unaligned data access in YARR_JIT on ARMv5 and below.
3066         https://bugs.webkit.org/show_bug.cgi?id=29695
3067
3068         On ARMv5 and below all data access should be naturally aligned.
3069         In the YARR_JIT there is a case when character pairs are
3070         loaded from the input string, but this data access is not
3071         naturally aligned. This fix introduces load32WithUnalignedHalfWords
3072         and branch32WithUnalignedHalfWords functions which contain
3073         naturally aligned memory loads - half word loads - on ARMv5 and below.
3074
3075         * assembler/MacroAssemblerARM.cpp:
3076         (JSC::MacroAssemblerARM::load32WithUnalignedHalfWords):
3077         * assembler/MacroAssemblerARM.h:
3078         (JSC::MacroAssemblerARM::load32WithUnalignedHalfWords):
3079         (JSC::MacroAssemblerARM::branch32WithUnalignedHalfWords):
3080         * assembler/MacroAssemblerARMv7.h:
3081         (JSC::MacroAssemblerARMv7::load32WithUnalignedHalfWords):
3082         (JSC::MacroAssemblerARMv7::branch32):
3083         (JSC::MacroAssemblerARMv7::branch32WithUnalignedHalfWords):
3084         * assembler/MacroAssemblerX86Common.h:
3085         (JSC::MacroAssemblerX86Common::load32WithUnalignedHalfWords):
3086         (JSC::MacroAssemblerX86Common::branch32WithUnalignedHalfWords):
3087         * wtf/Platform.h:
3088         * yarr/RegexJIT.cpp:
3089         (JSC::Yarr::RegexGenerator::generatePatternCharacterPair):
3090
3091 2009-09-25  Jeremy Orlow  <jorlow@chromium.org>
3092
3093         This is breaking Chromium try bots, so I'm counting this as a build fix.
3094
3095         Add more svn:ignore exceptions.  On different platforms, these files are
3096         generated with different case for JavaScriptCore.  Also there are some
3097         wtf project files that get built apparently.
3098
3099         * JavaScriptCore.gyp: Changed property svn:ignore.
3100
3101 2009-09-25  Ada Chan  <adachan@apple.com>
3102
3103         Build fix.
3104
3105         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3106         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
3107
3108 2009-09-25  Geoffrey Garen  <ggaren@apple.com>
3109
3110         Reviewed by Darin Adler.
3111
3112         Inlined some object creation code, including lexicalGlobalObject access
3113         https://bugs.webkit.org/show_bug.cgi?id=29750
3114         
3115         SunSpider says 0.5% faster.
3116         
3117         0.8% speedup on bench-alloc-nonretained.js.
3118         2.5% speedup on v8-splay.js.
3119
3120         * interpreter/CachedCall.h:
3121         (JSC::CachedCall::CachedCall):
3122         * interpreter/CallFrame.h:
3123         (JSC::ExecState::lexicalGlobalObject):
3124         (JSC::ExecState::globalThisValue):
3125         * interpreter/Interpreter.cpp:
3126         (JSC::Interpreter::dumpRegisters):
3127         (JSC::Interpreter::execute):
3128         (JSC::Interpreter::privateExecute):
3129         * jit/JITStubs.cpp:
3130         (JSC::DEFINE_STUB_FUNCTION):
3131         * runtime/FunctionConstructor.cpp:
3132         (JSC::constructFunction):
3133         * runtime/ScopeChain.cpp:
3134         (JSC::ScopeChainNode::print):
3135         * runtime/ScopeChain.h:
3136         (JSC::ScopeChainNode::ScopeChainNode):
3137         (JSC::ScopeChainNode::~ScopeChainNode):
3138         (JSC::ScopeChainNode::push):
3139         (JSC::ScopeChain::ScopeChain):
3140         (JSC::ScopeChain::globalObject): Added a globalObject data member to ScopeChainNode.
3141         Replaced accessor function for globalObject() with data member. Replaced
3142         globalThisObject() accessor with direct access to globalThis, to match.
3143
3144         * runtime/JSGlobalObject.cpp:
3145         (JSC::JSGlobalObject::init):
3146         * runtime/JSGlobalObject.h: Inlined array and object construction.
3147
3148 2009-09-25  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
3149
3150         Reviewed by Gavin Barraclough.
3151
3152         Add ARM version detection rules for Symbian
3153         https://bugs.webkit.org/show_bug.cgi?id=29715
3154
3155         * wtf/Platform.h:
3156
3157 2009-09-24  Xan Lopez  <xlopez@igalia.com>
3158
3159         Reviewed by Mark "Do It!" Rowe.
3160
3161         Some GCC versions don't like C++-style comments in preprocessor
3162         directives, change to C-style to shut them up.
3163
3164         * wtf/Platform.h:
3165
3166 2009-09-24  Oliver Hunt  <oliver@apple.com>
3167
3168         Reviewed by Gavin Barraclough.
3169
3170         Division is needlessly slow in 64-bit
3171         https://bugs.webkit.org/show_bug.cgi?id=29723
3172
3173         Add codegen for op_div on x86-64
3174
3175         * jit/JIT.cpp:
3176         (JSC::JIT::privateCompileMainPass):
3177         (JSC::JIT::privateCompileSlowCases):
3178         * jit/JIT.h:
3179         * jit/JITArithmetic.cpp:
3180         (JSC::JIT::compileBinaryArithOpSlowCase):
3181         (JSC::JIT::emit_op_div):
3182         (JSC::JIT::emitSlow_op_div):
3183         * jit/JITInlineMethods.h:
3184         (JSC::JIT::isOperandConstantImmediateDouble):
3185         (JSC::JIT::addressFor):
3186         (JSC::JIT::emitLoadDouble):
3187         (JSC::JIT::emitLoadInt32ToDouble):
3188         (JSC::JIT::emitJumpSlowCaseIfNotImmediateNumber):
3189
3190 2009-09-24  Jeremy Orlow  <jorlow@chromium.org>
3191
3192         Reviewed by Dimitri Glazkov.
3193
3194         Add GYP generated files to svn:ignore
3195         https://bugs.webkit.org/show_bug.cgi?id=29724
3196
3197         Adding the following files to the svn:ignore list (all in the
3198         JavaScriptCore/JavaScriptCore.gyp directory)
3199
3200         JavaScriptCore.xcodeproj
3201         JavaScriptCore.sln
3202         JavaScriptCore.vcproj
3203         JavaScriptCore_Debug.rules
3204         JavaScriptCore_Release.rules
3205         JavaScriptCore_Release - no tcmalloc.rules
3206         JavaScriptCore_Purify.rules
3207         JavaScriptCore.mk
3208         JavaScriptCore_Debug_rules.mk
3209         JavaScriptCore_Release_rules.mk
3210         JavaScriptCore_Release - no tcmalloc_rules.mk
3211         JavaScriptCore_Purify_rules.mk
3212         JavaScriptCore.scons
3213         JavaScriptCore_main.scons
3214
3215         * JavaScriptCore.gyp: Changed property svn:ignore.
3216
3217 2009-09-24  Yong Li  <yong.li@torchmobile.com>
3218
3219         Reviewed by Adam Barth.
3220
3221         Replace platform-dependent code with WTF::currentTime()
3222         https://bugs.webkit.org/show_bug.cgi?id=29148
3223
3224         * jsc.cpp:
3225         (StopWatch::start):
3226         (StopWatch::stop):
3227         (StopWatch::getElapsedMS):
3228         * runtime/TimeoutChecker.cpp:
3229         (JSC::getCPUTime):
3230
3231 2009-09-24  Mark Rowe  <mrowe@apple.com>
3232
3233         Reviewed by Sam Weinig.
3234
3235         <rdar://problem/7215058> FastMalloc scavenging thread should be named
3236
3237         * wtf/FastMalloc.cpp:
3238         (WTF::TCMalloc_PageHeap::scavengerThread): Set the thread name.
3239         * wtf/Platform.h: Move the knowledge of whether pthread_setname_np exists to here as HAVE(PTHREAD_SETNAME_NP).
3240         * wtf/ThreadingPthreads.cpp:
3241         (WTF::setThreadNameInternal): Use HAVE(PTHREAD_SETNAME_NP).
3242
3243 2009-09-24  Geoffrey Garen  <ggaren@apple.com>
3244
3245         Reviewed by Sam Weinig.
3246
3247         Renamed clear to removeAll, as suggested by Darin Adler.
3248
3249         * wtf/HashCountedSet.h:
3250         (WTF::::removeAll):
3251
3252 2009-09-24  Mark Rowe  <mrowe@apple.com>
3253
3254         Reviewed by Gavin Barraclough.
3255
3256         Fix FastMalloc to build with assertions enabled.
3257
3258         * wtf/FastMalloc.cpp:
3259         (WTF::TCMalloc_Central_FreeList::ReleaseToSpans):
3260         * wtf/TCSpinLock.h:
3261         (TCMalloc_SpinLock::IsHeld):
3262
3263 2009-09-24  Geoffrey Garen  <ggaren@apple.com>
3264
3265         Suggested by Darin Adler.
3266
3267         Removed some unnecessary parameter names.
3268
3269         * wtf/HashCountedSet.h:
3270
3271 2009-09-24  Janne Koskinen  <janne.p.koskinen@digia.com>
3272
3273         Reviewed by Simon Hausmann.
3274
3275         On Windows JSChar is typedef'ed to wchar_t.
3276
3277         When building with WINSCW for Symbian we need to do the
3278         same typedef.
3279
3280         * API/JSStringRef.h:
3281
3282 2009-09-23  Geoffrey Garen  <ggaren@apple.com>
3283
3284         A piece of my last patch that I forgot.
3285
3286         * wtf/HashCountedSet.h:
3287         (WTF::::clear): Added HashCountedSet::clear.
3288
3289 2009-09-24  Gabor Loki  <loki@inf.u-szeged.hu>
3290
3291         Reviewed by Gavin Barraclough.
3292
3293         Avoid __clear_cache built-in function if DISABLE_BUILTIN_CLEAR_CACHE define is set
3294         https://bugs.webkit.org/show_bug.cgi?id=28886
3295
3296         There are some GCC packages (for example GCC-2006q3 from CodeSourcery)
3297         which contain __clear_cache built-in function only for C while the C++
3298         version of __clear_cache is missing on ARM architectures.
3299
3300         Fixed a small bug in the inline assembly of cacheFlush function on
3301         ARM_TRADITIONAL.
3302
3303         * jit/ExecutableAllocator.h:
3304         (JSC::ExecutableAllocator::cacheFlush):
3305
3306 2009-09-23  Geoffrey Garen  <ggaren@apple.com>
3307
3308         Reviewed by Sam Weinig.
3309
3310         Added the ability to swap vectors with inline capacities, so you can
3311         store a vector with inline capacity in a hash table.
3312
3313         * wtf/Vector.h:
3314         (WTF::swap):
3315         (WTF::VectorBuffer::swap):
3316
3317 2009-09-23  David Kilzer  <ddkilzer@apple.com>
3318
3319         Move definition of USE(PLUGIN_HOST_PROCESS) from WebKitPrefix.h to Platform.h
3320
3321         Reviewed by Mark Rowe.
3322
3323         * wtf/Platform.h: Define WTF_USE_PLUGIN_HOST_PROCESS to 1 when
3324         building on 64-bit SnowLeopard.  Define to 0 elsewhere.
3325
3326 2009-09-22  Oliver Hunt  <oliver@apple.com>
3327
3328         Reviewed by Geoff Garen.
3329
3330         Code sampling builds are broken.
3331         https://bugs.webkit.org/show_bug.cgi?id=29662
3332
3333         Fix build.
3334
3335         * bytecode/EvalCodeCache.h:
3336         (JSC::EvalCodeCache::get):
3337         * bytecode/SamplingTool.cpp:
3338         (JSC::ScriptSampleRecord::sample):
3339         (JSC::SamplingTool::doRun):
3340         (JSC::SamplingTool::notifyOfScope):
3341         (JSC::compareScriptSampleRecords):
3342         (JSC::SamplingTool::dump):
3343         * bytecode/SamplingTool.h:
3344         (JSC::ScriptSampleRecord::ScriptSampleRecord):
3345         (JSC::ScriptSampleRecord::~ScriptSampleRecord):
3346         (JSC::SamplingTool::SamplingTool):
3347         * bytecompiler/BytecodeGenerator.cpp:
3348         (JSC::BytecodeGenerator::BytecodeGenerator):
3349         (JSC::BytecodeGenerator::emitNewFunction):
3350         (JSC::BytecodeGenerator::emitNewFunctionExpression):
3351         * bytecompiler/BytecodeGenerator.h:
3352         (JSC::BytecodeGenerator::makeFunction):
3353         * debugger/Debugger.cpp:
3354         (JSC::evaluateInGlobalCallFrame):
3355         * debugger/DebuggerCallFrame.cpp:
3356         (JSC::DebuggerCallFrame::evaluate):
3357         * parser/Nodes.cpp:
3358         (JSC::ScopeNode::ScopeNode):
3359         * runtime/Completion.cpp:
3360         (JSC::checkSyntax):
3361         (JSC::evaluate):
3362         * runtime/Executable.cpp:
3363         (JSC::FunctionExecutable::fromGlobalCode):
3364         * runtime/Executable.h:
3365         (JSC::ScriptExecutable::ScriptExecutable):
3366         (JSC::EvalExecutable::EvalExecutable):
3367         (JSC::EvalExecutable::create):
3368         (JSC::ProgramExecutable::ProgramExecutable):
3369         (JSC::FunctionExecutable::create):
3370         (JSC::FunctionExecutable::FunctionExecutable):
3371         * runtime/JSGlobalObjectFunctions.cpp:
3372         (JSC::globalFuncEval):
3373
3374 2009-09-22  Darin Adler  <darin@apple.com>
3375
3376         Reviewed by Sam Weinig.
3377
3378         * wtf/Forward.h: Added PassOwnPtr.
3379
3380 2009-09-22  Yaar Schnitman  <yaar@chromium.org>
3381
3382         Reviewed by David Levin.
3383
3384         Ported chromium.org's javascriptcore.gyp for the webkit chromium port.
3385
3386         https://bugs.webkit.org/show_bug.cgi?id=29617
3387
3388         * JavaScriptCore.gyp/JavaScriptCore.gyp: Added.
3389
3390 2009-09-22  Thiago Macieira  <thiago.macieira@nokia.com>
3391
3392         Reviewed by Simon Hausmann.
3393
3394         Fix compilation with WINSCW: no varargs macros
3395
3396         Disable variadic arguments for WINSCW just like we do
3397         for MSVC7.
3398
3399         * wtf/Assertions.h:
3400
3401 2009-09-22  Kent Hansen  <khansen@trolltech.com>
3402
3403         Reviewed by Simon Hausmann.
3404
3405         Disable variadic macros on MSVC7.
3406
3407         This was originally added in r26589 but not extended
3408         when LOG_DISABLED/ASSERT_DISABLED was introduced.
3409
3410         * wtf/Assertions.h:
3411
3412 2009-09-22  Simon Hausmann  <simon.hausmann@nokia.com>
3413
3414         Unreviewed build fix for Windows CE < 5
3415
3416         Define WINCEBASIC to disable the IsDebuggerPresent() code in
3417         wtf/Assertions.cpp.
3418
3419         * JavaScriptCore.pri:
3420
3421 2009-09-22  Joerg Bornemann  <joerg.bornemann@nokia.com>
3422
3423         Reviewed by Simon Hausmann.
3424
3425         Fix major memory leak in JavaScriptCore RegisterFile on Windows CE
3426
3427         https://bugs.webkit.org/show_bug.cgi?id=29367
3428
3429         On Widows CE we must decommit all committed pages before we release
3430         them. See VirtualFree documentation.
3431         Desktop Windows behaves much smoother in this situation.
3432
3433         * interpreter/RegisterFile.cpp:
3434         (JSC::RegisterFile::~RegisterFile):
3435
3436 2009-09-21  Greg Bolsinga  <bolsinga@apple.com>
3437
3438         Reviewed by Simon Fraser & Sam Weinig.
3439
3440         Add ENABLE(ORIENTATION_EVENTS)
3441         https://bugs.webkit.org/show_bug.cgi?id=29508
3442
3443         * wtf/Platform.h: Also sort PLATFORM(IPHONE) #defines.
3444
3445 2009-09-21  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
3446
3447         Reviewed by Eric Seidel.
3448
3449         [Fix] SourceCode's uninitialized member
3450         
3451         Potential source of crashes and bugs was fixed. Default constructor
3452         didn't initialized m_provider member.
3453
3454         https://bugs.webkit.org/show_bug.cgi?id=29364
3455
3456         * parser/SourceCode.h:
3457         (JSC::SourceCode::SourceCode):
3458
3459 2009-09-21  Oliver Hunt  <oliver@apple.com>
3460
3461         Reviewed by Geoff Garen.
3462
3463         REGRESSION (r48582): Crash in StructureStubInfo::initPutByIdTransition when reloading trac.webkit.org
3464         https://bugs.webkit.org/show_bug.cgi?id=29599
3465
3466         It is unsafe to attempt to cache new property transitions on
3467         dictionaries of any type.
3468
3469         * interpreter/Interpreter.cpp:
3470         (JSC::Interpreter::tryCachePutByID):
3471         * jit/JITStubs.cpp:
3472         (JSC::JITThunks::tryCachePutByID):
3473
3474 2009-09-21  Oliver Hunt  <oliver@apple.com>
3475
3476         RS=Maciej Stachowiak.
3477
3478         Re-land SNES fix with corrected assertion.
3479
3480         * interpreter/Interpreter.cpp:
3481         (JSC::Interpreter::resolveGlobal):
3482         (JSC::Interpreter::tryCachePutByID):
3483         (JSC::Interpreter::tryCacheGetByID):
3484         * jit/JITStubs.cpp:
3485         (JSC::JITThunks::tryCachePutByID):
3486         (JSC::JITThunks::tryCacheGetByID):
3487         (JSC::DEFINE_STUB_FUNCTION):
3488         * runtime/BatchedTransitionOptimizer.h:
3489         (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
3490         * runtime/JSObject.cpp:
3491         (JSC::JSObject::removeDirect):
3492         * runtime/Structure.cpp:
3493         (JSC::Structure::Structure):
3494         (JSC::Structure::getEnumerablePropertyNames):
3495         (JSC::Structure::despecifyDictionaryFunction):
3496         (JSC::Structure::addPropertyTransitionToExistingStructure):
3497         (JSC::Structure::addPropertyTransition):
3498         (JSC::Structure::removePropertyTransition):
3499         (JSC::Structure::toDictionaryTransition):
3500         (JSC::Structure::toCacheableDictionaryTransition):
3501         (JSC::Structure::toUncacheableDictionaryTransition):
3502         (JSC::Structure::fromDictionaryTransition):
3503         (JSC::Structure::removePropertyWithoutTransition):
3504         * runtime/Structure.h:
3505         (JSC::Structure::isDictionary):
3506         (JSC::Structure::isUncacheableDictionary):
3507         (JSC::Structure::):
3508         * runtime/StructureChain.cpp:
3509         (JSC::StructureChain::isCacheable):
3510
3511 2009-09-21  Adam Roben  <aroben@apple.com>
3512
3513         Revert r48573, as it caused many assertion failures
3514
3515         * interpreter/Interpreter.cpp:
3516         * jit/JITStubs.cpp:
3517         * runtime/BatchedTransitionOptimizer.h:
3518         * runtime/JSObject.cpp:
3519         * runtime/Structure.cpp:
3520         * runtime/Structure.h:
3521         * runtime/StructureChain.cpp:
3522
3523 2009-09-21  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
3524
3525         Unreviewed make dist build fix. Missing files.
3526
3527         * GNUmakefile.am:
3528
3529 2009-09-19  Gavin Barraclough  <barraclough@apple.com>
3530
3531         Reviewed by Sam 'Cabin Boy' Weinig.
3532
3533         Fix stack alignment with ARM THUMB2 JIT.
3534         https://bugs.webkit.org/show_bug.cgi?id=29526
3535         
3536         Stack is currently being decremented by 0x3c, bump this to 0x40 to make this a
3537         multiple of 16 bytes.
3538
3539         * jit/JITStubs.cpp:
3540         (JSC::JITThunks::JITThunks):
3541         * jit/JITStubs.h:
3542
3543 2009-09-20  Oliver Hunt  <oliver@apple.com>
3544
3545         Reviewed by Maciej Stachowiak.
3546
3547         SNES is too slow
3548         https://bugs.webkit.org/show_bug.cgi?id=29534
3549
3550         The problem was that the emulator used multiple classes with
3551         more properties than our dictionary cutoff allowed, this resulted
3552         in more or less all critical logic inside the emulator requiring
3553         uncached property access.
3554
3555         Rather than simply bumping the dictionary cutoff, this patch
3556         recognises that there are two ways to create a "dictionary"
3557         structure.  Either by adding a large number of properties, or
3558         by removing a property.  In the case of adding properties we
3559         know all the existing properties will maintain their existing
3560         offsets, so we could cache access to those properties, if we
3561         know they won't be removed.
3562
3563         To make this possible, this patch adds the logic required to
3564         distinguish a dictionary created by addition from one created
3565         by removal.  With this logic in place we can now cache access
3566         to objects with large numbers of properties.
3567
3568         SNES performance improved by more than 6x.
3569
3570         * interpreter/Interpreter.cpp:
3571         (JSC::Interpreter::resolveGlobal):
3572         (JSC::Interpreter::tryCachePutByID):
3573         (JSC::Interpreter::tryCacheGetByID):
3574         * jit/JITStubs.cpp:
3575         (JSC::JITThunks::tryCachePutByID):
3576         (JSC::JITThunks::tryCacheGetByID):
3577         (JSC::DEFINE_STUB_FUNCTION):
3578         * runtime/BatchedTransitionOptimizer.h:
3579         (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
3580         * runtime/JSObject.cpp:
3581         (JSC::JSObject::removeDirect):
3582         * runtime/Structure.cpp:
3583         (JSC::Structure::Structure):
3584         (JSC::Structure::getEnumerablePropertyNames):
3585         (JSC::Structure::despecifyDictionaryFunction):
3586         (JSC::Structure::addPropertyTransitionToExistingStructure):
3587         (JSC::Structure::addPropertyTransition):
3588         (JSC::Structure::removePropertyTransition):
3589         (JSC::Structure::toDictionaryTransition):
3590         (JSC::Structure::toCacheableDictionaryTransition):
3591         (JSC::Structure::toUncacheableDictionaryTransition):
3592         (JSC::Structure::fromDictionaryTransition):
3593         (JSC::Structure::removePropertyWithoutTransition):
3594         * runtime/Structure.h:
3595         (JSC::Structure::isDictionary):
3596         (JSC::Structure::isUncacheableDictionary):
3597         (JSC::Structure::):
3598         * runtime/StructureChain.cpp:
3599         (JSC::StructureChain::isCacheable):
3600
3601 2009-09-19  Oliver Hunt  <oliver@apple.com>
3602
3603         Reviewed by Maciej Stachowiak.
3604
3605         Implement ES5 Object.create function
3606         https://bugs.webkit.org/show_bug.cgi?id=29524
3607
3608         Implement Object.create.  Very simple patch, effectively Object.defineProperties
3609         only creating the target object itself.
3610
3611         * runtime/CommonIdentifiers.h:
3612         * runtime/ObjectConstructor.cpp:
3613         (JSC::ObjectConstructor::ObjectConstructor):
3614         (JSC::objectConstructorCreate):
3615
3616 2009-09-19  Dan Bernstein  <mitz@apple.com>
3617
3618         Fix clean debug builds.
3619
3620         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
3621
3622 2009-09-19  Joerg Bornemann  <joerg.bornemann@nokia.com>
3623
3624         Reviewed by George Staikos.
3625
3626         QtWebKit Windows CE compile fix
3627
3628         https://bugs.webkit.org/show_bug.cgi?id=29379
3629
3630         There is no _aligned_alloc or _aligned_free on Windows CE.
3631         We just use the Windows code that was there before and use VirtualAlloc.
3632         But that also means that the BLOCK_SIZE must be 64K as this function
3633         allocates on 64K boundaries.
3634
3635         * runtime/Collector.cpp:
3636         (JSC::Heap::allocateBlock):
3637         (JSC::Heap::freeBlock):
3638         * runtime/Collector.h:
3639
3640 2009-09-19  Oliver Hunt  <oliver@apple.com>
3641
3642         Reviewed by Sam Weinig.
3643
3644         Implement ES5 Object.defineProperties function
3645         https://bugs.webkit.org/show_bug.cgi?id=29522
3646
3647         Implement Object.defineProperties.  Fairly simple patch, simply makes use of
3648         existing functionality used for defineProperty.
3649
3650         * runtime/CommonIdentifiers.h:
3651         * runtime/ObjectConstructor.cpp:
3652         (JSC::ObjectConstructor::ObjectConstructor):
3653         (JSC::defineProperties):
3654         (JSC::objectConstructorDefineProperties):
3655
3656 2009-09-19  Oliver Hunt  <oliver@apple.com>
3657
3658         Reviewed by NOBODY (Build fix).
3659
3660         Windows build fix part2
3661
3662         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3663         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
3664
3665 2009-09-19  Oliver Hunt  <oliver@apple.com>
3666
3667         Reviewed by NOBODY (Buildfix).
3668
3669         Windows build fix part 1.
3670
3671         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3672         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
3673
3674 2009-09-18  Oliver Hunt  <oliver@apple.com>
3675
3676         Reviewed by Geoff Garen.
3677
3678         Implement ES5 Object.defineProperty function
3679         https://bugs.webkit.org/show_bug.cgi?id=29503
3680
3681         Implement Object.defineProperty.  This requires adding the API to
3682         ObjectConstructor, along with a helper function that implements the
3683         ES5 internal [[ToPropertyDescriptor]] function.  It then adds
3684         JSObject::defineOwnProperty that implements the appropriate ES5 semantics.
3685         Currently defineOwnProperty uses a delete followed by a put to redefine
3686         attributes of a property, clearly this is less efficient than it could be
3687         but we can improve this if it needs to be possible in future.
3688
3689         * JavaScriptCore.exp:
3690         * debugger/DebuggerActivation.cpp:
3691         (JSC::DebuggerActivation::defineGetter):
3692         (JSC::DebuggerActivation::defineSetter):
3693         * debugger/DebuggerActivation.h:
3694         * interpreter/Interpreter.cpp:
3695         (JSC::Interpreter::privateExecute):
3696         * jit/JITStubs.cpp:
3697           Update defineGetter/Setter calls
3698         * runtime/CommonIdentifiers.h:
3699         * runtime/JSArray.cpp:
3700         (JSC::JSArray::getOwnPropertySlot):
3701         * runtime/JSGlobalObject.cpp:
3702         (JSC::JSGlobalObject::defineGetter):
3703         (JSC::JSGlobalObject::defineSetter):
3704         * runtime/JSGlobalObject.h:
3705         * runtime/JSObject.cpp:
3706         (JSC::JSObject::defineGetter):
3707         (JSC::JSObject::defineSetter):
3708         (JSC::putDescriptor):
3709         (JSC::JSObject::defineOwnProperty):
3710         * runtime/JSObject.h:
3711         * runtime/ObjectConstructor.cpp:
3712         (JSC::ObjectConstructor::ObjectConstructor):
3713         (JSC::objectConstructorGetOwnPropertyDescriptor):
3714         (JSC::toPropertyDescriptor):
3715         (JSC::objectConstructorDefineProperty):
3716         * runtime/ObjectPrototype.cpp:
3717         (JSC::objectProtoFuncDefineGetter):
3718         (JSC::objectProtoFuncDefineSetter):
3719         * runtime/PropertyDescriptor.cpp:
3720         (JSC::PropertyDescriptor::writable):
3721         (JSC::PropertyDescriptor::enumerable):
3722         (JSC::PropertyDescriptor::configurable):
3723         (JSC::PropertyDescriptor::isDataDescriptor):
3724         (JSC::PropertyDescriptor::isGenericDescriptor):
3725         (JSC::PropertyDescriptor::isAccessorDescriptor):
3726         (JSC::PropertyDescriptor::getter):
3727         (JSC::PropertyDescriptor::setter):
3728         (JSC::PropertyDescriptor::setDescriptor):
3729         (JSC::PropertyDescriptor::setAccessorDescriptor):
3730         (JSC::PropertyDescriptor::setWritable):
3731         (JSC::PropertyDescriptor::setEnumerable):
3732         (JSC::PropertyDescriptor::setConfigurable):
3733         (JSC::PropertyDescriptor::setSetter):
3734         (JSC::PropertyDescriptor::setGetter):
3735         (JSC::PropertyDescriptor::equalTo):
3736         (JSC::PropertyDescriptor::attributesEqual):
3737         (JSC::PropertyDescriptor::attributesWithOverride):
3738         * runtime/PropertyDescriptor.h:
3739         (JSC::PropertyDescriptor::PropertyDescriptor):
3740         (JSC::PropertyDescriptor::value):
3741         (JSC::PropertyDescriptor::setValue):
3742         (JSC::PropertyDescriptor::isEmpty):
3743         (JSC::PropertyDescriptor::writablePresent):
3744         (JSC::PropertyDescriptor::enumerablePresent):
3745         (JSC::PropertyDescriptor::configurablePresent):
3746         (JSC::PropertyDescriptor::setterPresent):
3747         (JSC::PropertyDescriptor::getterPresent):
3748         (JSC::PropertyDescriptor::operator==):
3749         (JSC::PropertyDescriptor::):
3750
3751 2009-09-18  Gabor Loki  <loki@inf.u-szeged.hu>
3752
3753         Reviewed by Gavin Barraclough.
3754
3755         Build fix to enable ARM_THUMB2 on Linux
3756         https://bugs.webkit.org/show_bug.cgi?id=
3757
3758         * jit/ExecutableAllocator.h:
3759         (JSC::ExecutableAllocator::cacheFlush):
3760         * jit/JITStubs.cpp:
3761         * wtf/Platform.h:
3762
3763 2009-09-18  Gabor Loki  <loki@inf.u-szeged.hu>
3764
3765         Reviewed by Gavin Barraclough.
3766
3767         Defines two pseudo-platforms for ARM and Thumb-2 instruction set.
3768         https://bugs.webkit.org/show_bug.cgi?id=29122
3769
3770         Introduces WTF_PLATFORM_ARM_TRADITIONAL and WTF_PLATFORM_ARM_THUMB2
3771         macros on ARM platforms. The PLATFORM(ARM_THUMB2) should be used
3772         when Thumb-2 instruction set is the required target. The
3773         PLATFORM(ARM_TRADITIONAL) is for generic ARM instruction set. In
3774         case where the code is common the PLATFORM(ARM) have to be used.
3775
3776         * assembler/ARMAssembler.cpp:
3777         * assembler/ARMAssembler.h:
3778         * assembler/ARMv7Assembler.h:
3779         * assembler/MacroAssembler.h:
3780         * assembler/MacroAssemblerARM.cpp:
3781         * assembler/MacroAssemblerARM.h:
3782         * assembler/MacroAssemblerCodeRef.h:
3783         (JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr):
3784         * jit/ExecutableAllocator.h:
3785         * jit/JIT.h:
3786         * jit/JITInlineMethods.h:
3787         (JSC::JIT::beginUninterruptedSequence):
3788         (JSC::JIT::preserveReturnAddressAfterCall):
3789         (JSC::JIT::restoreReturnAddressBeforeReturn):
3790         (JSC::JIT::restoreArgumentReference):
3791         (JSC::JIT::restoreArgumentReferenceForTrampoline):
3792         * jit/JITOpcodes.cpp:
3793         * jit/JITStubs.cpp:
3794         (JSC::JITThunks::JITThunks):
3795         * jit/JITStubs.h:
3796         * wtf/Platform.h:
3797         * yarr/RegexJIT.cpp:
3798         (JSC::Yarr::RegexGenerator::generateEnter):
3799
3800 2009-09-18  Joerg Bornemann  <joerg.bornemann@nokia.com>
3801
3802         Reviewed by Simon Hausmann.
3803
3804         Fix the Qt/Windows CE build.
3805
3806         * JavaScriptCore.pri: Build the ce_time.cpp functions from
3807         within Qt externally.
3808         * wtf/DateMath.cpp: Removed unnecessary Qt #ifdef, for the
3809         Qt build these functions are no external, too.
3810
3811 2009-09-17  Janne Koskinen  <janne.p.koskinen@digia.com>
3812
3813         Reviewed by Simon Hausmann.
3814
3815         Symbian/WINSCW build fox.
3816
3817         Repeat Q_OS_WIN wchar_t hack for WINSCW, similar to
3818         revision 24774.
3819
3820         WINSCW defines wchar_t, thus UChar has to be wchar_t
3821
3822         * wtf/unicode/qt4/UnicodeQt4.h:
3823
3824 2009-09-17  Janne Koskinen  <janne.p.koskinen@digia.com>
3825
3826         Reviewed by Simon Hausmann.
3827
3828         Symbian/WINSCW build fix.
3829
3830         https://bugs.webkit.org/show_bug.cgi?id=29186
3831
3832         WINSCW Template specialisation name in declaration must the be the same as in implementation.
3833
3834         * runtime/LiteralParser.h:
3835
3836 2009-09-15  Norbert Leser  <norbert.leser@nokia.com>
3837
3838         Reviewed by Darin Adler.
3839
3840         https://bugs.webkit.org/show_bug.cgi?id=27060
3841
3842         Symbian compiler for emulator target (WINSCW) fails with
3843         "illegal operand" for m_attributesInPrevious in structure.ccp
3844         (when calling make_pair functions).
3845         This error is apparently due to the compiler not properly
3846         resolving the unsigned type of the declared bitfield.
3847
3848         Initial patch explicitly casted m_attributesInPrevious
3849         to unsigned, but since bitfield optimization is not critical for
3850         the emulator target, this conditional change in header file
3851         appears to be least intrusive.
3852
3853         * runtime/Structure.h:
3854
3855 2009-09-16  Gabor Loki  <loki@inf.u-szeged.hu>
3856
3857         Reviewed by Darin Adler.
3858
3859         Fix GCC warnings on ARM_THUMB2 platform
3860
3861         * assembler/ARMv7Assembler.h:
3862         (JSC::ARMThumbImmediate::countLeadingZerosPartial):
3863         * assembler/MacroAssemblerARMv7.h:
3864         (JSC::MacroAssemblerARMv7::branchTruncateDoubleToInt32):
3865         (JSC::MacroAssemblerARMv7::moveFixedWidthEncoding):
3866
3867 2009-09-16  Greg Bolsinga  <bolsinga@apple.com>
3868
3869         Add ENABLE(INSPECTOR)
3870         https://bugs.webkit.org/show_bug.cgi?id=29260
3871
3872         Reviewed by David Kilzer.
3873
3874         * wtf/Platform.h:
3875
3876 2009-09-16  Greg Bolsinga  <bolsinga@apple.com>
3877
3878         Add ENABLE(CONTEXT_MENUS)
3879         https://bugs.webkit.org/show_bug.cgi?id=29225
3880
3881         Reviewed by David Kilzer.
3882
3883         * wtf/Platform.h:
3884
3885 2009-09-16  Benjamin C Meyer  <benjamin.meyer@torchmobile.com>
3886
3887         Reviewed by Eric Seidel.
3888
3889         The webkit stdint and stdbool headers exists because
3890         the compiler MSVC doesn't include them.  The check
3891         should not check for PLATFORM(WIN_OS) but for MSVC.
3892
3893         * os-win32/stdbool.h:
3894         * os-win32/stdint.h:
3895
3896 2009-09-16  Greg Bolsinga  <bolsinga@apple.com>
3897
3898         Add ENABLE(DRAG_SUPPORT)
3899         https://bugs.webkit.org/show_bug.cgi?id=29233
3900
3901         Reviewed by David Kilzer.
3902
3903         * wtf/Platform.h:
3904
3905 2009-09-16  Kevin Ollivier  <kevino@theolliviers.com>
3906
3907         waf build fix after flag was moved to correct place.
3908
3909         * wscript:
3910
3911 2009-09-16  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>
3912
3913         Reviewed by Simon Hausmann.
3914
3915         [Qt] Build fix for 64-bit Qt on Mac OS X
3916
3917         * wtf/Platform.h: Use JSVALUE64 on DARWIN, not only on MAC
3918
3919 2009-09-16  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
3920
3921         Reviewed by Simon Hausmann.
3922
3923         [Qt] Fix wtf/ThreadSpecific.h under Qt to free thread local objects.
3924         https://bugs.webkit.org/show_bug.cgi?id=29295
3925
3926         This is an important fix when JavaScript workers are in use, since
3927         unfreed ThreadGlobalDatas leak a big amount of memory (50-100k each).
3928         QThreadStorage calls the destructor of a given object, which is the
3929         ThreadSpecific::Data. Unlike pthread, Qt is object oriented, and does
3930         not support the calling of a static utility function when the thread
3931         is about to close. In this patch we call the ThreadSpecific::destroy()
3932         utility function from the destructor of ThreadSpecific::Data. Moreover,
3933         since Qt resets all thread local values to 0 before the calling of the
3934         appropriate destructors, we set back the pointer to its original value.
3935         This is necessary because the get() method of the ThreadSpecific
3936         object may be called during the exuction of the destructor.
3937
3938         * wtf/ThreadSpecific.h:
3939         (WTF::ThreadSpecific::Data::~Data):
3940         (WTF::::~ThreadSpecific):
3941         (WTF::::set):
3942         (WTF::::destroy):
3943
3944 2009-09-10  Oliver Hunt  <oliver@apple.com>
3945
3946         Reviewed by Geoff Garen.
3947
3948         Allow anonymous storage inside JSObject
3949         https://bugs.webkit.org/show_bug.cgi?id=29168
3950
3951         Add the concept of anonymous slots to Structures so that it is
3952         possible to store references to values that need marking in the
3953         standard JSObject storage buffer.  This allows us to reduce the
3954         malloc overhead of some objects (by allowing them to store JS
3955         values in the inline storage of the object) and reduce the 
3956         dependence of custom mark functions (if all an objects children
3957         are in the standard object property storage there's no need to
3958         mark them manually).
3959
3960         * JavaScriptCore.exp:
3961         * runtime/JSObject.h:
3962         (JSC::JSObject::putAnonymousValue):
3963         (JSC::JSObject::getAnonymousValue):
3964         (JSC::JSObject::addAnonymousSlots):
3965         * runtime/JSWrapperObject.h:
3966         (JSC::JSWrapperObject::createStructure):
3967         (JSC::JSWrapperObject::JSWrapperObject):
3968         (JSC::JSWrapperObject::setInternalValue):
3969         * runtime/PropertyMapHashTable.h:
3970         * runtime/Structure.cpp:
3971         (JSC::Structure::~Structure):
3972         (JSC::Structure::materializePropertyMap):
3973         (JSC::Structure::addAnonymousSlotsTransition):
3974         (JSC::Structure::copyPropertyTable):
3975         (JSC::Structure::put):
3976         (JSC::Structure::rehashPropertyMapHashTable):
3977         * runtime/Structure.h:
3978         (JSC::Structure::propertyStorageSize):
3979         (JSC::StructureTransitionTable::reifySingleTransition):
3980         * runtime/StructureTransitionTable.h:
3981         (JSC::StructureTransitionTable::TransitionTable::addSlotTransition):
3982         (JSC::StructureTransitionTable::TransitionTable::removeSlotTransition):
3983         (JSC::StructureTransitionTable::TransitionTable::getSlotTransition):
3984         (JSC::StructureTransitionTable::getAnonymousSlotTransition):
3985         (JSC::StructureTransitionTable::addAnonymousSlotTransition):
3986         (JSC::StructureTransitionTable::removeAnonymousSlotTransition):
3987
3988 2009-09-15  Alex Milowski  <alex@milowski.com>
3989
3990         Reviewed by Tor Arne Vestbø.
3991
3992         Added the ENABLE_MATHML define to the features
3993
3994         * Configurations/FeatureDefines.xcconfig:
3995
3996 2009-09-15 Csaba Osztrogonac <oszi@inf.u-szeged.hu>
3997
3998         Reviewed by Tor Arne Vestbø.
3999
4000         [Qt] Build fix for windows.
4001
4002         After http://trac.webkit.org/changeset/47795 the MinGW build broke,
4003         because MinGW has __mingw_aligned_malloc instead of _aligned_malloc.
4004
4005         * runtime/Collector.cpp:
4006         (JSC::Heap::allocateBlock): MinGW case added.
4007         (JSC::Heap::freeBlock): MinGW case added.
4008
4009 2009-09-15  Csaba Osztrogonac  <oszi@inf.u-szeged.hu>
4010
4011         Reviewed by Tor Arne Vestbø.
4012
4013         [Qt] Build fix for Windows/MinGW
4014
4015         https://bugs.webkit.org/show_bug.cgi?id=29268
4016
4017         * wtf/Platform.h: JSVALUE32_64 temporarily disabled on PLATFORM(WIN_OS) with COMPILER(MINGW)
4018
4019 2009-09-14  Gabor Loki  <loki@inf.u-szeged.hu>
4020
4021         Reviewed by Gavin Barraclough.
4022
4023         Detect VFP at runtime in generic ARM port on Linux platform.
4024         https://bugs.webkit.org/show_bug.cgi?id=29076
4025
4026         * JavaScriptCore.pri:
4027         * assembler/MacroAssemblerARM.cpp: Added.
4028         (JSC::isVFPPresent):
4029         * assembler/MacroAssemblerARM.h:
4030         (JSC::MacroAssemblerARM::supportsFloatingPoint):
4031
4032 2009-09-14  Csaba Osztrogonac  <oszi@inf.u-szeged.hu>
4033
4034         Reviewed by Tor Arne Vestbø.
4035
4036         [Qt] Build fix for windows build.
4037
4038         * JavaScriptCore.pri: Correct a logic error.
4039         * pcre/dftables: Add missing paranthesis for tmpdir function.
4040
4041 2009-09-12  Oliver Hunt  <oliver@apple.com>
4042
4043         Reviewed by NOBODY (Build fix).
4044
4045         Build fix for windows exports (again).
4046
4047         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
4048         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
4049
4050 2009-09-12  Oliver Hunt  <oliver@apple.com>
4051
4052         Reviewed by NOBODY (Build fix).
4053
4054         Build fix for windows exports.
4055
4056         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
4057         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
4058
4059 2009-09-12  Oliver Hunt  <oliver@apple.com>
4060
4061         Reviewed by NOBODY (Build fix).
4062
4063         Correct fix for non-allinonefile builds
4064
4065         * runtime/ObjectConstructor.cpp:
4066
4067 2009-09-12  Oliver Hunt  <oliver@apple.com>
4068
4069         Reviewed by NOBODY (Build fix).
4070
4071         Fix non-allinonefile builds
4072
4073         * runtime/ObjectConstructor.cpp:
4074
4075 2009-09-12  Oliver Hunt  <oliver@apple.com>
4076
4077         Reviewed by Maciej Stachowiak.
4078
4079         [ES5] Implement Object.keys
4080         https://bugs.webkit.org/show_bug.cgi?id=29170
4081
4082         This patch basically requires two separate steps, the first is to split getPropertyNames
4083         into two functions -- getOwnPropertyNames and getPropertyNames, basically making them behave
4084         in the same way as getOwnPropertySlot and getPropertySlot.  In essence getOwnPropertyNames
4085         produces the list of properties on an object excluding its prototype chain and getPropertyNames
4086         just iterates the the object and its prototype chain calling getOwnPropertyNames at each level.
4087
4088         * API/JSCallbackObject.h:
4089         * API/JSCallbackObjectFunctions.h:
4090         (JSC::::getOwnPropertyNames):
4091         * JavaScriptCore.exp:
4092         * debugger/DebuggerActivation.cpp:
4093         (JSC::DebuggerActivation::getOwnPropertyNames):
4094         * debugger/DebuggerActivation.h:
4095         * runtime/CommonIdentifiers.h:
4096         * runtime/JSArray.cpp:
4097         (JSC::JSArray::getOwnPropertyNames):
4098         * runtime/JSArray.h:
4099         * runtime/JSByteArray.cpp:
4100         (JSC::JSByteArray::getOwnPropertyNames):
4101         * runtime/JSByteArray.h:
4102         * runtime/JSNotAnObject.cpp:
4103         (JSC::JSNotAnObject::getOwnPropertyNames):
4104         * runtime/JSNotAnObject.h:
4105         * runtime/JSObject.cpp:
4106         (JSC::JSObject::getOwnPropertyNames):
4107         * runtime/JSObject.h:
4108         * runtime/JSVariableObject.cpp:
4109         (JSC::JSVariableObject::getOwnPropertyNames):
4110         * runtime/JSVariableObject.h:
4111         * runtime/ObjectConstructor.cpp:
4112         (JSC::ObjectConstructor::ObjectConstructor):
4113         (JSC::objectConstructorKeys):
4114         * runtime/RegExpMatchesArray.h:
4115         (JSC::RegExpMatchesArray::getOwnPropertyNames):
4116         * runtime/StringObject.cpp:
4117         (JSC::StringObject::getOwnPropertyNames):
4118         * runtime/StringObject.h:
4119         * runtime/Structure.cpp:
4120         (JSC::Structure::getOwnEnumerablePropertyNames):
4121         (JSC::Structure::getEnumerablePropertyNames):
4122         * runtime/Structure.h:
4123
4124 2009-09-11  Oliver Hunt  <oliver@apple.com>
4125
4126         Reviewed by Sam Weinig.
4127
4128         getPropertyNames caching is invalid when the prototype chain contains objects with custom getPropertyNames
4129         https://bugs.webkit.org/show_bug.cgi?id=29214
4130
4131         Add a flag to TypeInfo to indicate whether a type overrides getPropertyNames.
4132         This flag is used to make sure that caching of the property name data is safe.
4133
4134         * API/JSCallbackConstructor.h:
4135         (JSC::JSCallbackConstructor::createStructure):
4136         * debugger/DebuggerActivation.h:
4137         (JSC::DebuggerActivation::createStructure):
4138         * runtime/BooleanObject.h:
4139         (JSC::BooleanObject::createStructure):
4140         * runtime/DatePrototype.h:
4141         (JSC::DatePrototype::createStructure):
4142         * runtime/FunctionPrototype.h:
4143         (JSC::FunctionPrototype::createStructure):
4144         * runtime/JSONObject.h:
4145         (JSC::JSONObject::createStructure):
4146         * runtime/JSObject.h:
4147         (JSC::JSObject::createStructure):
4148         * runtime/JSTypeInfo.h:
4149         (JSC::TypeInfo::hasDefaultGetPropertyNames):
4150         * runtime/JSVariableObject.h:
4151         (JSC::JSVariableObject::createStructure):
4152         * runtime/JSWrapperObject.h:
4153         (JSC::JSWrapperObject::createStructure):
4154         * runtime/MathObject.h:
4155         (JSC::MathObject::createStructure):
4156         * runtime/NumberConstructor.h:
4157         (JSC::NumberConstructor::createStructure):
4158         * runtime/NumberObject.h:
4159         (JSC::NumberObject::createStructure):
4160         * runtime/RegExpConstructor.h:
4161         (JSC::RegExpConstructor::createStructure):
4162         * runtime/RegExpObject.h:
4163         (JSC::RegExpObject::createStructure):
4164         * runtime/StructureChain.cpp:
4165         (JSC::StructureChain::isCacheable):
4166
4167 2009-09-11  Alexey Proskuryakov  <ap@webkit.org>
4168
4169         Reviewed by Geoff Garen.
4170
4171         https://bugs.webkit.org/show_bug.cgi?id=29207
4172         Add checks for using WebCore JS context on secondary threads
4173
4174         * runtime/JSGlobalData.cpp: (JSC::JSGlobalData::JSGlobalData):
4175         * runtime/JSGlobalData.h:
4176         Added a new mainThreadOnly flag that WebCore would set.
4177
4178         * runtime/Collector.cpp: (JSC::Heap::registerThread): JSC API methods always call this,
4179         so this is a good place to check that the API isn't used form a wrong thread.
4180
4181 2009-09-11  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
4182
4183         Reviewed by Simon Hausmann.
4184
4185         Compiling JavaScriptCore on sparc 64 with gcc fails.
4186
4187         ThreadSafeShared uses the atomic __gnu_cxx::__exchange_and_add with an int,
4188         however on sparc 64 the _Atomic_word argument is typedefed to long (8 bytes).
4189
4190         The patch disables WTF_USE_LOCKFREE_THREADSAFESHARED in ThreadSafeShared to use
4191         a mutex instead when compiling for sparc 64 with gcc.
4192
4193         https://bugs.webkit.org/show_bug.cgi?id=29175
4194
4195         * wtf/Platform.h:
4196         __sparc64__ is not defined on all OS.
4197         Uses instead: __sparc__ && __arch64__ || __sparcv9
4198         * wtf/Threading.h:
4199
4200 2009-09-11  Prasanth Ullattil  <prasanth.ullattil@nokia.com>
4201
4202         Reviewed by Simon Hausmann.
4203
4204         Fix compile error on Windows7(64Bit) with latest SDK.
4205
4206         Added the missing include file.
4207
4208         * runtime/UString.cpp:
4209
4210 2009-09-11  Joerg Bornemann  <joerg.bornemann@trolltech.com>
4211
4212         Reviewed by Simon Hausmann.
4213
4214         Qt/Windows CE compile fix, include the executable allocator and
4215         markstack implementation in the windows build.
4216
4217         * JavaScriptCore.pri:
4218
4219 2009-09-08  John Abd-El-Malek  <jam@chromium.org>
4220
4221         Reviewed by Dimitri Glazkov.
4222
4223         Remove unneeded define for ActiveX.
4224         https://bugs.webkit.org/show_bug.cgi?id=29054
4225
4226         * wtf/Platform.h:
4227
4228 2009-09-10  Mark Rowe  <mrowe@apple.com>
4229
4230         Rubber-stamped by Sam Weinig.
4231
4232         Update JavaScriptCore and WebKit's FeatureDefines.xcconfig so that they are in sync with WebCore as they need to be.
4233
4234         * Configurations/FeatureDefines.xcconfig:
4235
4236 2009-09-10  Fumitoshi Ukai  <ukai@chromium.org>
4237
4238         Reviewed by Alexey Proskuryakov.
4239
4240         Export WTF::tryFastMalloc used in WebSocketChannel.
4241         https://bugs.webkit.org/show_bug.cgi?id=28038
4242
4243         * JavaScriptCore.exp:
4244         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
4245         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
4