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