2010-06-09 Leandro Pereira <leandro@profusion.mobi>
[WebKit-https.git] / JavaScriptCore / ChangeLog
1 2010-06-09  Leandro Pereira  <leandro@profusion.mobi>
2
3         Reviewed by Adam Treat.
4
5         [EFL] Allow building core libraries as shared objects to speed up
6         linking time on machines with small amounts of memory.
7         http://webkit.org/b/39899
8
9         * CMakeLists.txt: If building with shared core, install the lib.
10         * jsc/CMakeListsEfl.txt: Needs Glib and Ecore to link dynamically.
11         * wtf/CMakeLists.txt: If building with shared core, install the lib.
12
13 2010-06-09  Gabor Loki  <loki@webkit.org>
14
15         Reviewed by David Levin.
16
17         Remove some unused variable warnings from JITOpcodes
18         https://bugs.webkit.org/show_bug.cgi?id=40298
19
20         * jit/JITOpcodes.cpp:
21         (JSC::JIT::privateCompileCTINativeCall):
22         * jit/JITOpcodes32_64.cpp:
23         (JSC::JIT::privateCompileCTINativeCall):
24
25 2010-05-18  Yuzo Fujishima  <yuzo@google.com>
26
27         Reviewed by Shinichiro Hamaji.
28
29         Fix for Bug 34529 -  [CSSOM] issues with cssText and selectorText
30         Add U16_LENGTH that is needed to implement CSS character serialization.
31         https://bugs.webkit.org/show_bug.cgi?id=34529
32
33         * wtf/unicode/qt4/UnicodeQt4.h:
34         * wtf/unicode/wince/UnicodeWince.h:
35
36 2010-06-08  Sheriff Bot  <webkit.review.bot@gmail.com>
37
38         Unreviewed, rolling out r60830.
39         http://trac.webkit.org/changeset/60830
40         https://bugs.webkit.org/show_bug.cgi?id=40305
41
42         Broke the Windows build (Requested by abarth on #webkit).
43
44         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
45         * wtf/OwnPtrCommon.h:
46         * wtf/brew/OwnPtrBrew.h: Removed.
47         * wtf/win/OwnPtrWin.h: Removed.
48
49 2010-06-08  MORITA Hajime  <morrita@google.com>
50
51         Unreviewed. An attempt to fix test break.
52
53         * Configurations/FeatureDefines.xcconfig:
54
55 2010-06-08  Kwang Yul Seo  <skyul@company100.net>
56
57         Reviewed by Adam Barth.
58
59         Change OwnPtrCommon to include platform-specific headers
60         https://bugs.webkit.org/show_bug.cgi?id=40279
61
62         Adding new type to OwnPtrCommon needlessly causes all ports to do full rebuilds.
63         Change OwnPtrCommon to include platform-specific headers to avoid all ports rebuilds.
64
65         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
66         * wtf/OwnPtrCommon.h:
67         * wtf/brew/OwnPtrBrew.h: Added.
68         * wtf/win/OwnPtrWin.h: Added.
69
70 2010-06-07  MORITA Hajime  <morrita@google.com>
71         
72         Reviewed by Kent Tamura.
73
74         https://bugs.webkit.org/show_bug.cgi?id=40219
75         [Mac] ENABLE_METER_TAG should be enabled
76         
77         Added ENABLE_METER_TAG.
78
79         * Configurations/FeatureDefines.xcconfig:
80
81 2010-06-07  Kwang Yul Seo  <skyul@company100.net>
82
83         Reviewed by Eric Seidel.
84
85         [BREWMP] Add more types to OwnPtr
86         https://bugs.webkit.org/show_bug.cgi?id=39667
87
88         Add ISSL and ISocket to the list of OwnPtr-ed type.
89
90         * wtf/OwnPtrCommon.h:
91         * wtf/brew/OwnPtrBrew.cpp:
92         (WTF::deleteOwnedPtr):
93
94 2010-06-07  Benjamin Poulain  <benjamin.poulain@nokia.com>
95
96         Reviewed by Simon Hausmann.
97
98         [Qt] Crash when compiling on Snow Leopard and running on Leopard
99         https://bugs.webkit.org/show_bug.cgi?id=31403
100
101         Disable the use of pthread_setname_np and other symbols
102         when targetting Leopard.
103
104         Use the defines TARGETING_XX instead of BUILDING_ON_XX 
105         for features that cannot be used before Snow Leopard.
106
107         * wtf/Platform.h:
108
109 2010-06-07  Gabor Loki  <loki@webkit.org>
110
111         Reviewed by NOBODY (JSVALUE32_64 build fix).
112
113         * jit/JITOpcodes32_64.cpp:
114         (JSC::JIT::privateCompileCTINativeCall):
115
116 2010-06-06  Gavin Barraclough  <barraclough@apple.com>
117
118         Reviewed by NOBODY (windows build fix pt 2).
119
120         * JavaScriptCore.exp:
121         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
122
123 2010-06-06  Gavin Barraclough  <barraclough@apple.com>
124
125         Reviewed by NOBODY (windows build fix pt 1).
126
127         * JavaScriptCore.exp:
128         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
129
130 2010-06-06  Gavin Barraclough  <barraclough@apple.com>
131
132         Reviewed by Sam Weinig.
133
134         Bug 40214 - Clean up error construction / throwing in JSC.
135         
136         The one egregious insanity here is that creating an error requires
137         a VM-entry-esqe-host call (the string argument is wrapped as a JS
138         object & pushed on the RegisterFile, then unwrapped back to a
139         UString).  Changing this also means you only require a global
140         object, not an ExecState, to create an error.
141
142         The methods to create error objects are also parameterized
143         requiring a switch on the type, which can be made cleaner and
144         faster by moving to a separate method per error type.  Code to add
145         divot information to error had been duplicated, and is coalesced
146         back into a single function.
147
148         Convenience methods added to create & throw type & syntax error
149         with a default error message, since this is a common case.
150
151         Also, errors are currently thrown either using
152         "throwError(exec, error)" or "exec->setException(error)" - unify
153         on the former, since this is more commonly used.  Add
154         "throwVMError(exec, error)" equivalents, as a convenience for
155         cases where the result was being wrapped in "JSValue::encode(...)".
156
157         * API/JSCallbackConstructor.cpp:
158         (JSC::constructJSCallback):
159         * API/JSCallbackFunction.cpp:
160         (JSC::JSCallbackFunction::call):
161         * API/JSCallbackObjectFunctions.h:
162         (JSC::::getOwnPropertySlot):
163         (JSC::::put):
164         (JSC::::deleteProperty):
165         (JSC::::construct):
166         (JSC::::hasInstance):
167         (JSC::::call):
168         (JSC::::toNumber):
169         (JSC::::toString):
170         (JSC::::staticValueGetter):
171         (JSC::::staticFunctionGetter):
172         (JSC::::callbackGetter):
173         * API/JSObjectRef.cpp:
174         (JSObjectMakeError):
175         * JavaScriptCore.exp:
176         * bytecompiler/BytecodeGenerator.cpp:
177         (JSC::BytecodeGenerator::emitNewError):
178         (JSC::BytecodeGenerator::emitThrowExpressionTooDeepException):
179         * bytecompiler/BytecodeGenerator.h:
180         * bytecompiler/NodesCodegen.cpp:
181         (JSC::ThrowableExpressionData::emitThrowError):
182         (JSC::RegExpNode::emitBytecode):
183         (JSC::PostfixErrorNode::emitBytecode):
184         (JSC::PrefixErrorNode::emitBytecode):
185         (JSC::AssignErrorNode::emitBytecode):
186         (JSC::ForInNode::emitBytecode):
187         (JSC::ContinueNode::emitBytecode):
188         (JSC::BreakNode::emitBytecode):
189         (JSC::ReturnNode::emitBytecode):
190         (JSC::LabelNode::emitBytecode):
191         * interpreter/CallFrame.h:
192         * interpreter/Interpreter.cpp:
193         (JSC::Interpreter::throwException):
194         (JSC::Interpreter::privateExecute):
195         * jit/JITStubs.cpp:
196         (JSC::DEFINE_STUB_FUNCTION):
197         * jsc.cpp:
198         (functionRun):
199         (functionLoad):
200         (functionCheckSyntax):
201         * parser/Nodes.h:
202         * runtime/ArrayConstructor.cpp:
203         (JSC::constructArrayWithSizeQuirk):
204         * runtime/ArrayPrototype.cpp:
205         (JSC::arrayProtoFuncToString):
206         (JSC::arrayProtoFuncToLocaleString):
207         (JSC::arrayProtoFuncJoin):
208         (JSC::arrayProtoFuncFilter):
209         (JSC::arrayProtoFuncMap):
210         (JSC::arrayProtoFuncEvery):
211         (JSC::arrayProtoFuncForEach):
212         (JSC::arrayProtoFuncSome):
213         (JSC::arrayProtoFuncReduce):
214         (JSC::arrayProtoFuncReduceRight):
215         * runtime/BooleanPrototype.cpp:
216         (JSC::booleanProtoFuncToString):
217         (JSC::booleanProtoFuncValueOf):
218         * runtime/DatePrototype.cpp:
219         (JSC::dateProtoFuncToString):
220         (JSC::dateProtoFuncToUTCString):
221         (JSC::dateProtoFuncToISOString):
222         (JSC::dateProtoFuncToDateString):
223         (JSC::dateProtoFuncToTimeString):
224         (JSC::dateProtoFuncToLocaleString):
225         (JSC::dateProtoFuncToLocaleDateString):
226         (JSC::dateProtoFuncToLocaleTimeString):
227         (JSC::dateProtoFuncGetTime):
228         (JSC::dateProtoFuncGetFullYear):
229         (JSC::dateProtoFuncGetUTCFullYear):
230         (JSC::dateProtoFuncToGMTString):
231         (JSC::dateProtoFuncGetMonth):
232         (JSC::dateProtoFuncGetUTCMonth):
233         (JSC::dateProtoFuncGetDate):
234         (JSC::dateProtoFuncGetUTCDate):
235         (JSC::dateProtoFuncGetDay):
236         (JSC::dateProtoFuncGetUTCDay):
237         (JSC::dateProtoFuncGetHours):
238         (JSC::dateProtoFuncGetUTCHours):
239         (JSC::dateProtoFuncGetMinutes):
240         (JSC::dateProtoFuncGetUTCMinutes):
241         (JSC::dateProtoFuncGetSeconds):
242         (JSC::dateProtoFuncGetUTCSeconds):
243         (JSC::dateProtoFuncGetMilliSeconds):
244         (JSC::dateProtoFuncGetUTCMilliseconds):
245         (JSC::dateProtoFuncGetTimezoneOffset):
246         (JSC::dateProtoFuncSetTime):
247         (JSC::setNewValueFromTimeArgs):
248         (JSC::setNewValueFromDateArgs):
249         (JSC::dateProtoFuncSetMilliSeconds):
250         (JSC::dateProtoFuncSetUTCMilliseconds):
251         (JSC::dateProtoFuncSetSeconds):
252         (JSC::dateProtoFuncSetUTCSeconds):
253         (JSC::dateProtoFuncSetMinutes):
254         (JSC::dateProtoFuncSetUTCMinutes):
255         (JSC::dateProtoFuncSetHours):
256         (JSC::dateProtoFuncSetUTCHours):
257         (JSC::dateProtoFuncSetDate):
258         (JSC::dateProtoFuncSetUTCDate):
259         (JSC::dateProtoFuncSetMonth):
260         (JSC::dateProtoFuncSetUTCMonth):
261         (JSC::dateProtoFuncSetFullYear):
262         (JSC::dateProtoFuncSetUTCFullYear):
263         (JSC::dateProtoFuncSetYear):
264         (JSC::dateProtoFuncGetYear):
265         (JSC::dateProtoFuncToJSON):
266         * runtime/Error.cpp:
267         (JSC::createError):
268         (JSC::createEvalError):
269         (JSC::createRangeError):
270         (JSC::createReferenceError):
271         (JSC::createSyntaxError):
272         (JSC::createTypeError):
273         (JSC::createURIError):
274         (JSC::addErrorSourceInfo):
275         (JSC::addErrorDivotInfo):
276         (JSC::addErrorInfo):
277         (JSC::hasErrorInfo):
278         (JSC::throwError):
279         (JSC::throwTypeError):
280         (JSC::throwSyntaxError):
281         * runtime/Error.h:
282         (JSC::throwVMError):
283         (JSC::throwVMTypeError):
284         * runtime/ErrorConstructor.cpp:
285         (JSC::constructWithErrorConstructor):
286         (JSC::callErrorConstructor):
287         * runtime/ErrorConstructor.h:
288         * runtime/ErrorInstance.cpp:
289         (JSC::ErrorInstance::ErrorInstance):
290         (JSC::ErrorInstance::create):
291         * runtime/ErrorInstance.h:
292         * runtime/ErrorPrototype.cpp:
293         (JSC::ErrorPrototype::ErrorPrototype):
294         * runtime/ExceptionHelpers.cpp:
295         (JSC::createStackOverflowError):
296         (JSC::createUndefinedVariableError):
297         (JSC::createInvalidParamError):
298         (JSC::createNotAConstructorError):
299         (JSC::createNotAFunctionError):
300         (JSC::createNotAnObjectError):
301         (JSC::throwOutOfMemoryError):
302         * runtime/ExceptionHelpers.h:
303         * runtime/Executable.cpp:
304         (JSC::EvalExecutable::compile):
305         (JSC::ProgramExecutable::checkSyntax):
306         (JSC::ProgramExecutable::compile):
307         * runtime/FunctionConstructor.cpp:
308         (JSC::constructFunction):
309         * runtime/FunctionPrototype.cpp:
310         (JSC::functionProtoFuncToString):
311         (JSC::functionProtoFuncApply):
312         (JSC::functionProtoFuncCall):
313         * runtime/Identifier.cpp:
314         (JSC::Identifier::from):
315         * runtime/Identifier.h:
316         * runtime/JSArray.cpp:
317         (JSC::JSArray::put):
318         * runtime/JSFunction.cpp:
319         (JSC::callHostFunctionAsConstructor):
320         * runtime/JSGlobalObjectFunctions.cpp:
321         (JSC::encode):
322         (JSC::decode):
323         (JSC::globalFuncEval):
324         * runtime/JSONObject.cpp:
325         (JSC::Stringifier::appendStringifiedValue):
326         (JSC::Walker::walk):
327         (JSC::JSONProtoFuncParse):
328         (JSC::JSONProtoFuncStringify):
329         * runtime/JSObject.cpp:
330         (JSC::throwSetterError):
331         (JSC::JSObject::put):
332         (JSC::JSObject::putWithAttributes):
333         (JSC::JSObject::defaultValue):
334         (JSC::JSObject::hasInstance):
335         (JSC::JSObject::defineOwnProperty):
336         * runtime/JSObject.h:
337         * runtime/JSValue.cpp:
338         (JSC::JSValue::toObjectSlowCase):
339         (JSC::JSValue::synthesizeObject):
340         (JSC::JSValue::synthesizePrototype):
341         * runtime/NativeErrorConstructor.cpp:
342         (JSC::constructWithNativeErrorConstructor):
343         (JSC::callNativeErrorConstructor):
344         * runtime/NativeErrorConstructor.h:
345         * runtime/NumberPrototype.cpp:
346         (JSC::numberProtoFuncToString):
347         (JSC::numberProtoFuncToLocaleString):
348         (JSC::numberProtoFuncValueOf):
349         (JSC::numberProtoFuncToFixed):
350         (JSC::numberProtoFuncToExponential):
351         (JSC::numberProtoFuncToPrecision):
352         * runtime/ObjectConstructor.cpp:
353         (JSC::objectConstructorGetPrototypeOf):
354         (JSC::objectConstructorGetOwnPropertyDescriptor):
355         (JSC::objectConstructorGetOwnPropertyNames):
356         (JSC::objectConstructorKeys):
357         (JSC::toPropertyDescriptor):
358         (JSC::objectConstructorDefineProperty):
359         (JSC::objectConstructorDefineProperties):
360         (JSC::objectConstructorCreate):
361         * runtime/ObjectPrototype.cpp:
362         (JSC::objectProtoFuncDefineGetter):
363         (JSC::objectProtoFuncDefineSetter):
364         * runtime/RegExpConstructor.cpp:
365         (JSC::constructRegExp):
366         * runtime/RegExpObject.cpp:
367         (JSC::RegExpObject::match):
368         * runtime/RegExpPrototype.cpp:
369         (JSC::regExpProtoFuncTest):
370         (JSC::regExpProtoFuncExec):
371         (JSC::regExpProtoFuncCompile):
372         (JSC::regExpProtoFuncToString):
373         * runtime/StringPrototype.cpp:
374         (JSC::stringProtoFuncToString):
375
376 2010-06-05  Kwang Yul Seo  <skyul@company100.net>
377
378         Reviewed by Eric Seidel.
379
380         [BREWMP] Add PLATFORM(BREWMP) guard for using std::xxx
381         https://bugs.webkit.org/show_bug.cgi?id=39710
382
383         Build fix for BREW MP.
384
385         * wtf/MathExtras.h:
386
387 2010-06-04  Adam Barth  <abarth@webkit.org>
388
389         Reviewed by Darin Adler.
390
391         HTML5 parser should be within 1% of old parser performance
392         https://bugs.webkit.org/show_bug.cgi?id=40172
393
394         Fix cast in this operator= to allow for assignment between vectors with
395         different inline capacities (as clearly intended by its author).
396
397         * wtf/Vector.h:
398         (WTF::::operator):
399
400 2010-06-04  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
401
402         Reviewed by Kenneth Rohde Christiansen.
403
404         New QtScript API; QScriptValue::instanceOf.
405
406         New function create an easy way to check value's prototype hierarchy.
407
408         [Qt] QScriptValue should have an instanceOf method
409         https://bugs.webkit.org/show_bug.cgi?id=40120
410
411         * qt/api/qscriptvalue.cpp:
412         (QScriptValue::instanceOf):
413         * qt/api/qscriptvalue.h:
414         * qt/api/qscriptvalue_p.h:
415         (QScriptValuePrivate::instanceOf):
416         * qt/tests/qscriptvalue/tst_qscriptvalue.h:
417         * qt/tests/qscriptvalue/tst_qscriptvalue_generated_comparison.cpp:
418         (tst_QScriptValue::instanceOf_initData):
419         (tst_QScriptValue::instanceOf_makeData):
420         (tst_QScriptValue::instanceOf_test):
421
422 2010-06-04  Gavin Barraclough  <barraclough@apple.com>
423
424         Reviewed by NOBODY (interpreter build fix).
425
426         * interpreter/Interpreter.cpp:
427         (JSC::Interpreter::privateExecute):
428
429 2010-06-04  Mark Rowe  <mrowe@apple.com>
430
431         Silence some warnings seen on the build bot.
432
433         * JavaScriptCore.JSVALUE32_64only.exp: Add a trailing newline.
434         * JavaScriptCore.JSVALUE32only.exp: Ditto.
435         * JavaScriptCore.JSVALUE64only.exp: Ditto.
436         * JavaScriptCore.xcodeproj/project.pbxproj: Remove the .exp files from all targets so that Xcode doesn't
437         complain about not knowing how to compile them.
438
439 2010-06-04  Gavin Barraclough  <barraclough@apple.com>
440
441         Reviewed by Oliver Hunt.
442
443         Bug 40187 - Change function signature of NativeConstructor to match NativeFunction
444
445         Mostly for consistency, but constructor & args arguments are redundant,
446         and this will help if we wish to be able to JIT calls to more constructors.
447
448         * API/JSCallbackConstructor.cpp:
449         (JSC::constructJSCallback):
450         * API/JSCallbackObject.h:
451         * API/JSCallbackObjectFunctions.h:
452         (JSC::::construct):
453         * interpreter/Interpreter.cpp:
454         (JSC::Interpreter::executeConstruct):
455         * interpreter/Interpreter.h:
456         * jit/JITStubs.cpp:
457         (JSC::DEFINE_STUB_FUNCTION):
458         * runtime/ArrayConstructor.cpp:
459         (JSC::constructWithArrayConstructor):
460         * runtime/BooleanConstructor.cpp:
461         (JSC::constructWithBooleanConstructor):
462         * runtime/ConstructData.cpp:
463         (JSC::construct):
464         * runtime/ConstructData.h:
465         * runtime/DateConstructor.cpp:
466         (JSC::constructWithDateConstructor):
467         * runtime/Error.cpp:
468         (JSC::constructNativeError):
469         (JSC::Error::create):
470         * runtime/ErrorConstructor.cpp:
471         (JSC::constructWithErrorConstructor):
472         * runtime/FunctionConstructor.cpp:
473         (JSC::constructWithFunctionConstructor):
474         * runtime/NativeErrorConstructor.cpp:
475         (JSC::constructWithNativeErrorConstructor):
476         * runtime/NativeErrorConstructor.h:
477         (JSC::NativeErrorConstructor::errorStructure):
478         * runtime/NumberConstructor.cpp:
479         (JSC::constructWithNumberConstructor):
480         * runtime/ObjectConstructor.cpp:
481         (JSC::constructWithObjectConstructor):
482         * runtime/RegExpConstructor.cpp:
483         (JSC::constructWithRegExpConstructor):
484         * runtime/StringConstructor.cpp:
485         (JSC::constructWithStringConstructor):
486
487 2010-06-04  Tony Gentilcore  <tonyg@chromium.org>
488
489         Reviewed by Adam Barth.
490
491         Add a takeFirst() method to Deque and use it where appropriate.
492         https://bugs.webkit.org/show_bug.cgi?id=40089
493
494         * wtf/Deque.h:
495         (WTF::::takeFirst):
496         * wtf/MainThread.cpp:
497         (WTF::dispatchFunctionsFromMainThread):
498         * wtf/MessageQueue.h:
499         (WTF::::tryGetMessage):
500
501 2010-06-04  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
502
503         Reviewed by Kenneth Rohde Christiansen.
504
505         Remove a QEXPECT_FAIL flag from an autotest.
506
507         Test tst_QScriptEngine::globalObject pass after 36600 bug
508         fix have been applied.
509
510         [Qt] Expected fail in the tst_QScriptEngine::globalObject should be removed.
511         https://bugs.webkit.org/show_bug.cgi?id=40114
512
513         * qt/tests/qscriptengine/tst_qscriptengine.cpp:
514         (tst_QScriptEngine::globalObject):
515
516 2010-06-04  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
517
518         Reviewed by Kenneth Rohde Christiansen.
519
520         Fix QScriptValue::equals.
521
522         Handling for a few edge cases were added. Now comparison between
523         NaN, an invalid objects should works as supposed.
524
525         [Qt] QScriptValue::equals problems
526         https://bugs.webkit.org/show_bug.cgi?id=40110
527
528         * qt/api/qscriptvalue.cpp:
529         (QScriptValue::equals):
530         * qt/api/qscriptvalue_p.h:
531         (QScriptValuePrivate::equals):
532         * qt/tests/qscriptvalue/tst_qscriptvalue.h:
533         * qt/tests/qscriptvalue/tst_qscriptvalue_generated_comparison.cpp:
534         (tst_QScriptValue::equals_initData):
535         (tst_QScriptValue::equals_makeData):
536         (tst_QScriptValue::equals_test):
537
538 2010-06-03  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
539
540         Reviewed by Kenneth Rohde Christiansen.
541
542         New states in QScriptValuePrivate.
543
544         The CSpecial state was divided into CNull and CUndefined. It simplify
545         the QScriptValue code by avoiding a few "cast" and "if".
546         Moreover the MSVS compiler didn't like casting between a double and an
547         enum which is avoided now.
548
549         [Qt] The QScriptValuePrivate::CSpecial is too generic.
550         https://bugs.webkit.org/show_bug.cgi?id=40067
551
552         * qt/api/qscriptvalue_p.h:
553         (QScriptValuePrivate::):
554         (QScriptValuePrivate::QScriptValuePrivate):
555         (QScriptValuePrivate::isNull):
556         (QScriptValuePrivate::isUndefined):
557         (QScriptValuePrivate::toString):
558         (QScriptValuePrivate::toNumber):
559         (QScriptValuePrivate::toBool):
560         (QScriptValuePrivate::toObject):
561         (QScriptValuePrivate::assignEngine):
562         (QScriptValuePrivate::isNumberBased):
563
564 2010-06-03  Gavin Barraclough  <barraclough@apple.com>
565
566         Reviewed by NOBODY (Qt build fix).
567
568         * wtf/Platform.h:
569
570 2010-06-03  Gavin Barraclough  <barraclough@apple.com>
571
572         Reviewed by Mark Rowe.
573
574         Bug 40150 - ENABLE_JIT_OPTIMIZE_NATIVE_CALL on all x86/x86_64 platforms
575         This was fixed in bug #40094.
576
577         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
578         * wtf/Platform.h:
579
580 2010-06-03  Gavin Barraclough  <barraclough@apple.com>
581
582         Reviewed by NOBODY (Interpreter build fix).
583
584         * JavaScriptCore.JSVALUE32_64only.exp:
585         * JavaScriptCore.JSVALUE32only.exp:
586         * JavaScriptCore.JSVALUE64only.exp:
587         * interpreter/Interpreter.cpp:
588         (JSC::Interpreter::privateExecute):
589
590 2010-06-03  Gavin Barraclough  <barraclough@apple.com>
591
592         Reviewed by NOBODY (windows build fix II).
593
594         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
595
596 2010-06-03  Gavin Barraclough  <barraclough@apple.com>
597
598         Reviewed by NOBODY (windows build fix).
599
600         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
601
602 2010-06-02  Gavin Barraclough  <barraclough@apple.com>
603
604         Reviewed by Oliver Hunt.
605
606         Bug 40094 - The return type of NativeFunction should be EncodedJSValue
607         On Windows & Linux, using JSVALUE32_64, EncodedJSValue is returned in registers, but JSValue is not.
608
609         * API/JSCallbackFunction.cpp:
610         (JSC::JSCallbackFunction::call):
611         * API/JSCallbackFunction.h:
612         * API/JSCallbackObject.h:
613         * API/JSCallbackObjectFunctions.h:
614         (JSC::::call):
615         * JavaScriptCore.exp:
616         * interpreter/Interpreter.cpp:
617         (JSC::Interpreter::executeCall):
618         * jit/JITStubs.cpp:
619         (JSC::DEFINE_STUB_FUNCTION):
620         * jit/JITStubs.h:
621         * jsc.cpp:
622         (functionPrint):
623         (functionDebug):
624         (functionGC):
625         (functionVersion):
626         (functionRun):
627         (functionLoad):
628         (functionCheckSyntax):
629         (functionSetSamplingFlags):
630         (functionClearSamplingFlags):
631         (functionReadline):
632         (functionQuit):
633         * runtime/ArrayConstructor.cpp:
634         (JSC::callArrayConstructor):
635         (JSC::arrayConstructorIsArray):
636         * runtime/ArrayPrototype.cpp:
637         (JSC::arrayProtoFuncToString):
638         (JSC::arrayProtoFuncToLocaleString):
639         (JSC::arrayProtoFuncJoin):
640         (JSC::arrayProtoFuncConcat):
641         (JSC::arrayProtoFuncPop):
642         (JSC::arrayProtoFuncPush):
643         (JSC::arrayProtoFuncReverse):
644         (JSC::arrayProtoFuncShift):
645         (JSC::arrayProtoFuncSlice):
646         (JSC::arrayProtoFuncSort):
647         (JSC::arrayProtoFuncSplice):
648         (JSC::arrayProtoFuncUnShift):
649         (JSC::arrayProtoFuncFilter):
650         (JSC::arrayProtoFuncMap):
651         (JSC::arrayProtoFuncEvery):
652         (JSC::arrayProtoFuncForEach):
653         (JSC::arrayProtoFuncSome):
654         (JSC::arrayProtoFuncReduce):
655         (JSC::arrayProtoFuncReduceRight):
656         (JSC::arrayProtoFuncIndexOf):
657         (JSC::arrayProtoFuncLastIndexOf):
658         * runtime/BooleanConstructor.cpp:
659         (JSC::callBooleanConstructor):
660         * runtime/BooleanPrototype.cpp:
661         (JSC::booleanProtoFuncToString):
662         (JSC::booleanProtoFuncValueOf):
663         * runtime/CallData.h:
664         * runtime/DateConstructor.cpp:
665         (JSC::callDate):
666         (JSC::dateParse):
667         (JSC::dateNow):
668         (JSC::dateUTC):
669         * runtime/DatePrototype.cpp:
670         (JSC::dateProtoFuncToString):
671         (JSC::dateProtoFuncToUTCString):
672         (JSC::dateProtoFuncToISOString):
673         (JSC::dateProtoFuncToDateString):
674         (JSC::dateProtoFuncToTimeString):
675         (JSC::dateProtoFuncToLocaleString):
676         (JSC::dateProtoFuncToLocaleDateString):
677         (JSC::dateProtoFuncToLocaleTimeString):
678         (JSC::dateProtoFuncGetTime):
679         (JSC::dateProtoFuncGetFullYear):
680         (JSC::dateProtoFuncGetUTCFullYear):
681         (JSC::dateProtoFuncToGMTString):
682         (JSC::dateProtoFuncGetMonth):
683         (JSC::dateProtoFuncGetUTCMonth):
684         (JSC::dateProtoFuncGetDate):
685         (JSC::dateProtoFuncGetUTCDate):
686         (JSC::dateProtoFuncGetDay):
687         (JSC::dateProtoFuncGetUTCDay):
688         (JSC::dateProtoFuncGetHours):
689         (JSC::dateProtoFuncGetUTCHours):
690         (JSC::dateProtoFuncGetMinutes):
691         (JSC::dateProtoFuncGetUTCMinutes):
692         (JSC::dateProtoFuncGetSeconds):
693         (JSC::dateProtoFuncGetUTCSeconds):
694         (JSC::dateProtoFuncGetMilliSeconds):
695         (JSC::dateProtoFuncGetUTCMilliseconds):
696         (JSC::dateProtoFuncGetTimezoneOffset):
697         (JSC::dateProtoFuncSetTime):
698         (JSC::dateProtoFuncSetMilliSeconds):
699         (JSC::dateProtoFuncSetUTCMilliseconds):
700         (JSC::dateProtoFuncSetSeconds):
701         (JSC::dateProtoFuncSetUTCSeconds):
702         (JSC::dateProtoFuncSetMinutes):
703         (JSC::dateProtoFuncSetUTCMinutes):
704         (JSC::dateProtoFuncSetHours):
705         (JSC::dateProtoFuncSetUTCHours):
706         (JSC::dateProtoFuncSetDate):
707         (JSC::dateProtoFuncSetUTCDate):
708         (JSC::dateProtoFuncSetMonth):
709         (JSC::dateProtoFuncSetUTCMonth):
710         (JSC::dateProtoFuncSetFullYear):
711         (JSC::dateProtoFuncSetUTCFullYear):
712         (JSC::dateProtoFuncSetYear):
713         (JSC::dateProtoFuncGetYear):
714         (JSC::dateProtoFuncToJSON):
715         * runtime/ErrorConstructor.cpp:
716         (JSC::callErrorConstructor):
717         * runtime/ErrorPrototype.cpp:
718         (JSC::errorProtoFuncToString):
719         * runtime/FunctionConstructor.cpp:
720         (JSC::callFunctionConstructor):
721         * runtime/FunctionPrototype.cpp:
722         (JSC::callFunctionPrototype):
723         (JSC::functionProtoFuncToString):
724         (JSC::functionProtoFuncApply):
725         (JSC::functionProtoFuncCall):
726         * runtime/JSCell.h:
727         (JSC::getCallData):
728         (JSC::getConstructData):
729         * runtime/JSFunction.cpp:
730         (JSC::callHostFunctionAsConstructor):
731         * runtime/JSFunction.h:
732         * runtime/JSGlobalObjectFunctions.cpp:
733         (JSC::globalFuncEval):
734         (JSC::globalFuncParseInt):
735         (JSC::globalFuncParseFloat):
736         (JSC::globalFuncIsNaN):
737         (JSC::globalFuncIsFinite):
738         (JSC::globalFuncDecodeURI):
739         (JSC::globalFuncDecodeURIComponent):
740         (JSC::globalFuncEncodeURI):
741         (JSC::globalFuncEncodeURIComponent):
742         (JSC::globalFuncEscape):
743         (JSC::globalFuncUnescape):
744         (JSC::globalFuncJSCPrint):
745         * runtime/JSGlobalObjectFunctions.h:
746         * runtime/JSONObject.cpp:
747         (JSC::JSONProtoFuncParse):
748         (JSC::JSONProtoFuncStringify):
749         * runtime/JSObject.cpp:
750         (JSC::callDefaultValueFunction):
751         * runtime/JSValue.h:
752         * runtime/MathObject.cpp:
753         (JSC::mathProtoFuncAbs):
754         (JSC::mathProtoFuncACos):
755         (JSC::mathProtoFuncASin):
756         (JSC::mathProtoFuncATan):
757         (JSC::mathProtoFuncATan2):
758         (JSC::mathProtoFuncCeil):
759         (JSC::mathProtoFuncCos):
760         (JSC::mathProtoFuncExp):
761         (JSC::mathProtoFuncFloor):
762         (JSC::mathProtoFuncLog):
763         (JSC::mathProtoFuncMax):
764         (JSC::mathProtoFuncMin):
765         (JSC::mathProtoFuncPow):
766         (JSC::mathProtoFuncRandom):
767         (JSC::mathProtoFuncRound):
768         (JSC::mathProtoFuncSin):
769         (JSC::mathProtoFuncSqrt):
770         (JSC::mathProtoFuncTan):
771         * runtime/NativeErrorConstructor.cpp:
772         (JSC::callNativeErrorConstructor):
773         * runtime/NumberConstructor.cpp:
774         (JSC::callNumberConstructor):
775         * runtime/NumberPrototype.cpp:
776         (JSC::numberProtoFuncToString):
777         (JSC::numberProtoFuncToLocaleString):
778         (JSC::numberProtoFuncValueOf):
779         (JSC::numberProtoFuncToFixed):
780         (JSC::numberProtoFuncToExponential):
781         (JSC::numberProtoFuncToPrecision):
782         * runtime/ObjectConstructor.cpp:
783         (JSC::callObjectConstructor):
784         (JSC::objectConstructorGetPrototypeOf):
785         (JSC::objectConstructorGetOwnPropertyDescriptor):
786         (JSC::objectConstructorGetOwnPropertyNames):
787         (JSC::objectConstructorKeys):
788         (JSC::toPropertyDescriptor):
789         (JSC::objectConstructorDefineProperty):
790         (JSC::objectConstructorDefineProperties):
791         (JSC::objectConstructorCreate):
792         * runtime/ObjectPrototype.cpp:
793         (JSC::objectProtoFuncValueOf):
794         (JSC::objectProtoFuncHasOwnProperty):
795         (JSC::objectProtoFuncIsPrototypeOf):
796         (JSC::objectProtoFuncDefineGetter):
797         (JSC::objectProtoFuncDefineSetter):
798         (JSC::objectProtoFuncLookupGetter):
799         (JSC::objectProtoFuncLookupSetter):
800         (JSC::objectProtoFuncPropertyIsEnumerable):
801         (JSC::objectProtoFuncToLocaleString):
802         (JSC::objectProtoFuncToString):
803         * runtime/ObjectPrototype.h:
804         * runtime/RegExpConstructor.cpp:
805         (JSC::callRegExpConstructor):
806         * runtime/RegExpObject.cpp:
807         (JSC::callRegExpObject):
808         * runtime/RegExpPrototype.cpp:
809         (JSC::regExpProtoFuncTest):
810         (JSC::regExpProtoFuncExec):
811         (JSC::regExpProtoFuncCompile):
812         (JSC::regExpProtoFuncToString):
813         * runtime/StringConstructor.cpp:
814         (JSC::stringFromCharCode):
815         (JSC::callStringConstructor):
816         * runtime/StringPrototype.cpp:
817         (JSC::stringProtoFuncReplace):
818         (JSC::stringProtoFuncToString):
819         (JSC::stringProtoFuncCharAt):
820         (JSC::stringProtoFuncCharCodeAt):
821         (JSC::stringProtoFuncConcat):
822         (JSC::stringProtoFuncIndexOf):
823         (JSC::stringProtoFuncLastIndexOf):
824         (JSC::stringProtoFuncMatch):
825         (JSC::stringProtoFuncSearch):
826         (JSC::stringProtoFuncSlice):
827         (JSC::stringProtoFuncSplit):
828         (JSC::stringProtoFuncSubstr):
829         (JSC::stringProtoFuncSubstring):
830         (JSC::stringProtoFuncToLowerCase):
831         (JSC::stringProtoFuncToUpperCase):
832         (JSC::stringProtoFuncLocaleCompare):
833         (JSC::stringProtoFuncBig):
834         (JSC::stringProtoFuncSmall):
835         (JSC::stringProtoFuncBlink):
836         (JSC::stringProtoFuncBold):
837         (JSC::stringProtoFuncFixed):
838         (JSC::stringProtoFuncItalics):
839         (JSC::stringProtoFuncStrike):
840         (JSC::stringProtoFuncSub):
841         (JSC::stringProtoFuncSup):
842         (JSC::stringProtoFuncFontcolor):
843         (JSC::stringProtoFuncFontsize):
844         (JSC::stringProtoFuncAnchor):
845         (JSC::stringProtoFuncLink):
846         (JSC::stringProtoFuncTrim):
847         (JSC::stringProtoFuncTrimLeft):
848         (JSC::stringProtoFuncTrimRight):
849
850 2010-06-02  Mark Rowe  <mrowe@apple.com>
851
852         Reviewed by Gavin Barraclough.
853
854         Add value-representation specific sections to the mac export file.
855
856         * Configurations/JavaScriptCore.xcconfig:
857         * DerivedSources.make:
858         * JavaScriptCore.JSVALUE32_64only.exp: Added.
859         * JavaScriptCore.JSVALUE32only.exp: Added.
860         * JavaScriptCore.JSVALUE64only.exp: Added.
861         * JavaScriptCore.xcodeproj/project.pbxproj:
862
863 2010-06-02  Mark Rowe  <mrowe@apple.com>
864
865         Reviewed by Gavin Barraclough.
866
867         <rdar://problem/8054988> Work around an LLVM GCC code generation bug that results in crashes inside PCRE.
868
869         * pcre/pcre_exec.cpp:
870         (repeatInformationFromInstructionOffset): Change the type of instructionOffset to int.  There's no good
871         reason for it to be a short, and using int prevents this code from triggering the LLVM GCC bug.
872
873 2010-06-02  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
874
875         Reviewed by Kenneth Rohde Christiansen.
876
877         Fix the QScriptValue::strictlyEquals function.
878
879         Handling for a few edge cases was added.
880
881         New autotest that covers the QScriptValue::strictlyEquals function.
882
883         [Qt] QScriptValue::strictlyEquals is broken
884         https://bugs.webkit.org/show_bug.cgi?id=36600
885
886         * qt/api/qscriptvalue.cpp:
887         (QScriptValue::strictlyEquals):
888         * qt/api/qscriptvalue_p.h:
889         (QScriptValuePrivate::strictlyEquals):
890         * qt/tests/qscriptvalue/qscriptvalue.pro:
891         * qt/tests/qscriptvalue/tst_qscriptvalue.h:
892         * qt/tests/qscriptvalue/tst_qscriptvalue_generated_comparison.cpp: Added.
893         (tst_QScriptValue::strictlyEquals_initData):
894         (tst_QScriptValue::strictlyEquals_makeData):
895         (tst_QScriptValue::strictlyEquals_test):
896
897 2010-06-02  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
898
899         Reviewed by Kenneth Rohde Christiansen.
900
901         New function QScriptEngine::newObject.
902
903         The function creates a object of class Object and returns it
904         as a QScriptValue.
905
906         [Qt] QScriptEngine API should contain a newObject function
907         https://bugs.webkit.org/show_bug.cgi?id=39114
908
909         * qt/api/qscriptengine.cpp:
910         (QScriptEngine::newObject):
911         * qt/api/qscriptengine.h:
912         * qt/api/qscriptengine_p.cpp:
913         (QScriptEnginePrivate::newObject):
914         * qt/api/qscriptengine_p.h:
915         * qt/tests/qscriptengine/tst_qscriptengine.cpp:
916         (tst_QScriptEngine::newObject):
917
918 2010-06-02  Gabor Loki  <loki@webkit.org>
919
920         Reviewed by Gavin Barraclough.
921         https://bugs.webkit.org/show_bug.cgi?id=40011
922
923         Thumb-2 build fix: The offset parameter of ldrh should be encoded as an
924         imm12 immediate constant in load16. If it is not fit in the instruction
925         a temporary register has to be used.
926
927         * assembler/MacroAssemblerARMv7.h:
928         (JSC::MacroAssemblerARMv7::load16):
929
930 2010-06-02  Sterling Swigart  <sswigart@google.com>
931
932         Reviewed by David Levin.
933
934         Image Resizer Patch 0: Added compilation argument to conditionally compile pending patches.
935         https://bugs.webkit.org/show_bug.cgi?id=39906
936
937         * Configurations/FeatureDefines.xcconfig:
938
939 2010-06-01  Gavin Barraclough  <barraclough@apple.com>
940
941         Reviewed by Sam Weinig.
942
943         Bug 40021 - Refactor bytecode generation for calls so that register for this & args are allocated together
944
945         This is a useful stepping stone towards reversing argument order.
946
947         * bytecompiler/BytecodeGenerator.cpp:
948         (JSC::BytecodeGenerator::BytecodeGenerator):
949         (JSC::BytecodeGenerator::addParameter):
950         (JSC::BytecodeGenerator::emitCall):
951         (JSC::BytecodeGenerator::emitCallEval):
952         (JSC::BytecodeGenerator::emitConstruct):
953         * bytecompiler/BytecodeGenerator.h:
954         (JSC::CallArguments::thisRegister):
955         (JSC::CallArguments::argumentRegister):
956         (JSC::CallArguments::callFrame):
957         (JSC::CallArguments::count):
958         (JSC::BytecodeGenerator::shouldEmitProfileHooks):
959         * bytecompiler/NodesCodegen.cpp:
960         (JSC::NewExprNode::emitBytecode):
961         (JSC::CallArguments::CallArguments):
962         (JSC::EvalFunctionCallNode::emitBytecode):
963         (JSC::FunctionCallValueNode::emitBytecode):
964         (JSC::FunctionCallResolveNode::emitBytecode):
965         (JSC::FunctionCallBracketNode::emitBytecode):
966         (JSC::FunctionCallDotNode::emitBytecode):
967         (JSC::CallFunctionCallDotNode::emitBytecode):
968         (JSC::ApplyFunctionCallDotNode::emitBytecode):
969
970 2010-06-01  Yong Li  <yoli@rim.com>
971
972         Reviewed by Darin Adler.
973
974         Explicitly use PTHREAD_MUTEX_NORMAL to create pthread mutex.
975         https://bugs.webkit.org/show_bug.cgi?id=39893
976
977         * wtf/ThreadingPthreads.cpp:
978         (WTF::Mutex::Mutex):
979
980 2010-06-01  Kwang Yul Seo  <skyul@company100.net>
981
982         Reviewed by Xan Lopez.
983
984         [GTK] Use DEFINE_STATIC_LOCAL for threadMapMutex and threadMap
985         https://bugs.webkit.org/show_bug.cgi?id=39831
986
987         Use DEFINE_STATIC_LOCAL for static local variables.
988
989         * wtf/gtk/ThreadingGtk.cpp:
990         (WTF::threadMapMutex):
991         (WTF::threadMap):
992         (WTF::identifierByGthreadHandle):
993
994 2010-06-01  Kent Tamura  <tkent@chromium.org>
995
996         Reviewed by Shinichiro Hamaji.
997
998         Fix style errors of dtoa
999         https://bugs.webkit.org/show_bug.cgi?id=39972
1000
1001         Fix all errors reported by check-webkit-style.
1002
1003         * wtf/dtoa.cpp:
1004         * wtf/dtoa.h:
1005
1006 2010-05-30  Darin Adler  <darin@apple.com>
1007
1008         Reviewed by Sam Weinig.
1009
1010         * wtf/OwnArrayPtr.h:
1011         (WTF::OwnArrayPtr::set): Fix the assertion in here to match the one in OwnPtr.
1012         At some point someone fixed the "asserts when assigning to 0 and the pointer is
1013         already 0" issue in OwnPtr but forgot to do it here.
1014
1015 2010-05-29  Geoffrey Garen  <ggaren@apple.com>
1016
1017         Windows build fix: Updated exported symbols.
1018         
1019         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1020
1021 2010-05-29  Geoffrey Garen  <ggaren@apple.com>
1022
1023         Disabled ENABLE_JIT_OPTIMIZE_NATIVE_CALL on Windows for now, until I
1024         can figure out why it's crashing.
1025
1026         * wtf/Platform.h:
1027
1028 2010-05-29  Geoffrey Garen  <ggaren@apple.com>
1029
1030         Fixed Windows crash seen on buildbot.
1031
1032         * jit/JITOpcodes32_64.cpp:
1033         (JSC::JIT::privateCompileCTINativeCall): __fastcall puts the first
1034         argument in ecx.
1035
1036 2010-05-28  Geoffrey Garen  <ggaren@apple.com>
1037
1038         Windows build fix: Updated exported symbols.
1039
1040         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1041
1042 2010-05-28  Geoffrey Garen  <ggaren@apple.com>
1043
1044         Qt build fix: disable a little more stuff when JIT_OPTIMIZE_NATIVE_CALL
1045         is disabled.
1046
1047         * runtime/Lookup.cpp:
1048         (JSC::setUpStaticFunctionSlot):
1049         * runtime/Lookup.h:
1050         * wtf/Platform.h:
1051
1052 2010-05-28  Geoffrey Garen  <ggaren@apple.com>
1053
1054         Windows build fix: Updated exported symbols.
1055
1056         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1057
1058 2010-05-28  Geoffrey Garen  <ggaren@apple.com>
1059
1060         Reviewed by Sam Weinig, Gavin Barraclough, Oliver Hunt.
1061
1062         Simplified the host calling convention.
1063         
1064         22.5% speedup on 32-bit host function calls. 9.5% speedup on 64-bit host
1065         function calls.
1066         
1067         No change on SunSpider.
1068         
1069         All JS calls (but not constructs, yet) now go through the normal JS
1070         calling convention via the RegisterFile. As a result, the host calling
1071         convention, which used to be this
1072
1073             JSValue (JSC_HOST_CALL *NativeFunction)(ExecState*, JSObject*, JSValue thisValue, const ArgList&)
1074             
1075         is now this
1076
1077             JSValue (JSC_HOST_CALL *NativeFunction)(ExecState*)
1078             
1079         Callee, 'this', and argument access all hapen relative to the ExecState*,
1080         which is a pointer into the RegisterFile.
1081         
1082         This patch comes in two parts.
1083         
1084         PART ONE: Functional code changes.
1085         
1086         * wtf/Platform.h: Disabled optimized calls on platforms I didn't test.
1087         We can re-enable once we verify that host calls on these platforms are
1088         correct.
1089
1090         * debugger/DebuggerCallFrame.cpp:
1091         (JSC::DebuggerCallFrame::functionName):
1092         (JSC::DebuggerCallFrame::calculatedFunctionName): Updated for change to
1093         ExecState::callee().
1094
1095         (JSC::DebuggerCallFrame::thisObject): Updated for removal of ExecState::thisValue().
1096
1097         * interpreter/CallFrame.cpp:
1098         * interpreter/CallFrame.h:
1099         (JSC::ExecState::callee):
1100         (JSC::ExecState::scopeChain):
1101         (JSC::ExecState::init): Changed callee() to be JSObject* instead of
1102         JSFunction* -- now, it might be some other callable host object.
1103
1104         (JSC::ExecState::hostThisRegister):
1105         (JSC::ExecState::hostThisValue):
1106         (JSC::ExecState::argumentCount):
1107         (JSC::ExecState::argumentCountIncludingThis):
1108         (JSC::ExecState::argument):
1109         (JSC::ExecState::setArgumentCountIncludingThis):
1110         (JSC::ExecState::setCallee): Added convenient accessors for arguments
1111         from within a host function. Removed thisValue() because it was too
1112         tempting to use incorrectly, and it only had one or two clients, anyway.
1113
1114         * interpreter/Interpreter.cpp:
1115         (JSC::Interpreter::callEval): Updated for removal of ExecState::thisValue().
1116
1117         (JSC::Interpreter::throwException): Be sure to shrink the register file
1118         before invoking the exception handler, to reduce the chances that the
1119         handler will re-throw in the case of stack overflow. (Re-throwing is now
1120         more likely than it used to be, since standardizing the calling convention
1121         implicitly added stack overflow checks to some places where they used to be missing.)
1122
1123         (JSC::Interpreter::execute): Clarified the scope of DynamicGlobalObjectScope.
1124         Updated for CallFrame::init API change.
1125
1126         (JSC::Interpreter::executeCall): Clarified scope of DynamicGlobalObjectScope.
1127         Updated for CallFrame::init API change. Added support for calling a host
1128         function.
1129
1130         (JSC::Interpreter::executeConstruct): Clarified scope of DynamicGlobalObjectScope.
1131         Updated for CallFrame::init API change. 
1132
1133         (JSC::Interpreter::prepareForRepeatCall): Updated for CallFrame::init API change. 
1134
1135         (JSC::Interpreter::privateExecute): Updated for CallFrame::init API change.
1136         Added some explicit JSValue(JSObject*) initialization, since relaxing
1137         the JSFunction* restriction on callee has made register types more ambiguous.
1138         Removed toThisObject() conversion, since all callees do it themselves now.
1139         Updated host function call for new host function signature. Updated for
1140         change to ExecState::argumentCount() API.
1141
1142         * interpreter/Register.h:
1143         (JSC::Register::):
1144         (JSC::Register::operator=):
1145         (JSC::Register::function): Changed callee() to be JSObject* instead of
1146         JSFunction* -- now, it might be some other callable host object.
1147
1148         * jit/JITOpcodes.cpp:
1149         (JSC::JIT::privateCompileCTINativeCall):
1150         * jit/JITOpcodes32_64.cpp:
1151         (JSC::JIT::privateCompileCTINativeCall): Deleted a bunch of code that
1152         set up the arguments to host functions -- all but one of the arguments
1153         are gone now. This is the actual optimization.
1154
1155         * jit/JITStubs.cpp:
1156         (JSC::DEFINE_STUB_FUNCTION): Updated for ExecState and Register API
1157         changes noted above. Removed toThisObject() conversion, since all callees
1158         do it themselves now.
1159         
1160         * runtime/ArgList.h:
1161         (JSC::ArgList::ArgList): ArgList is getting close to unused. Added a
1162         temporary shim for converting from ExecState* to ArgList where it's still
1163         necessary.
1164
1165         * runtime/Arguments.h:
1166         (JSC::Arguments::getArgumentsData):
1167         (JSC::Arguments::Arguments): Updated for ExecState and Register API
1168         changes noted above. 
1169
1170         * runtime/CallData.cpp:
1171         (JSC::call): Changed call always to call Interpreter::executeCall, even
1172         for host functions. This ensures that the normal calling convention is
1173         set up in the RegsiterFile when calling from C++ to host function.
1174
1175         * runtime/CallData.h: Changed host function signature as described above.
1176
1177         * runtime/ConstructData.cpp:
1178         (JSC::construct): Moved JSFunction::construct code here so I could nix
1179         JSFunction::call and JSFunction::call. We want a JSFunction-agnostic
1180         way to call and construct, so that everything works naturally for non-
1181         JSFunction objects. 
1182
1183         * runtime/JSFunction.cpp:
1184         (JSC::callHostFunctionAsConstructor):
1185         * runtime/JSFunction.h: Updated for ExecState and Register API changes
1186         noted above. Nixed JSFunction::call and JSFunction::construct, noted above.
1187  
1188         * runtime/JSGlobalObject.cpp:
1189         (JSC::JSGlobalObject::init): Ditto.
1190
1191         PART TWO: Global search and replace.
1192         
1193         In the areas below, I used global search-and-replace to change
1194             (ExecState*, JSObject*, JSValue, const ArgList&) => (ExecState*)
1195             args.size() => exec->argumentCount()
1196             args.at(i) => exec->argument(i)
1197
1198         * API/JSCallbackFunction.cpp:
1199         (JSC::JSCallbackFunction::call):
1200         * API/JSCallbackFunction.h:
1201         * API/JSCallbackObject.h:
1202         * API/JSCallbackObjectFunctions.h:
1203         (JSC::::call):
1204         * JavaScriptCore.exp:
1205         * jsc.cpp:
1206         (functionPrint):
1207         (functionDebug):
1208         (functionGC):
1209         (functionVersion):
1210         (functionRun):
1211         (functionLoad):
1212         (functionCheckSyntax):
1213         (functionSetSamplingFlags):
1214         (functionClearSamplingFlags):
1215         (functionReadline):
1216         (functionQuit):
1217         * runtime/ArrayConstructor.cpp:
1218         (JSC::callArrayConstructor):
1219         (JSC::arrayConstructorIsArray):
1220         * runtime/ArrayPrototype.cpp:
1221         (JSC::arrayProtoFuncToString):
1222         (JSC::arrayProtoFuncToLocaleString):
1223         (JSC::arrayProtoFuncJoin):
1224         (JSC::arrayProtoFuncConcat):
1225         (JSC::arrayProtoFuncPop):
1226         (JSC::arrayProtoFuncPush):
1227         (JSC::arrayProtoFuncReverse):
1228         (JSC::arrayProtoFuncShift):
1229         (JSC::arrayProtoFuncSlice):
1230         (JSC::arrayProtoFuncSort):
1231         (JSC::arrayProtoFuncSplice):
1232         (JSC::arrayProtoFuncUnShift):
1233         (JSC::arrayProtoFuncFilter):
1234         (JSC::arrayProtoFuncMap):
1235         (JSC::arrayProtoFuncEvery):
1236         (JSC::arrayProtoFuncForEach):
1237         (JSC::arrayProtoFuncSome):
1238         (JSC::arrayProtoFuncReduce):
1239         (JSC::arrayProtoFuncReduceRight):
1240         (JSC::arrayProtoFuncIndexOf):
1241         (JSC::arrayProtoFuncLastIndexOf):
1242         * runtime/BooleanConstructor.cpp:
1243         (JSC::callBooleanConstructor):
1244         * runtime/BooleanPrototype.cpp:
1245         (JSC::booleanProtoFuncToString):
1246         (JSC::booleanProtoFuncValueOf):
1247         * runtime/DateConstructor.cpp:
1248         (JSC::callDate):
1249         (JSC::dateParse):
1250         (JSC::dateNow):
1251         (JSC::dateUTC):
1252         * runtime/DatePrototype.cpp:
1253         (JSC::formatLocaleDate):
1254         (JSC::fillStructuresUsingTimeArgs):
1255         (JSC::fillStructuresUsingDateArgs):
1256         (JSC::dateProtoFuncToString):
1257         (JSC::dateProtoFuncToUTCString):
1258         (JSC::dateProtoFuncToISOString):
1259         (JSC::dateProtoFuncToDateString):
1260         (JSC::dateProtoFuncToTimeString):
1261         (JSC::dateProtoFuncToLocaleString):
1262         (JSC::dateProtoFuncToLocaleDateString):
1263         (JSC::dateProtoFuncToLocaleTimeString):
1264         (JSC::dateProtoFuncGetTime):
1265         (JSC::dateProtoFuncGetFullYear):
1266         (JSC::dateProtoFuncGetUTCFullYear):
1267         (JSC::dateProtoFuncToGMTString):
1268         (JSC::dateProtoFuncGetMonth):
1269         (JSC::dateProtoFuncGetUTCMonth):
1270         (JSC::dateProtoFuncGetDate):
1271         (JSC::dateProtoFuncGetUTCDate):
1272         (JSC::dateProtoFuncGetDay):
1273         (JSC::dateProtoFuncGetUTCDay):
1274         (JSC::dateProtoFuncGetHours):
1275         (JSC::dateProtoFuncGetUTCHours):
1276         (JSC::dateProtoFuncGetMinutes):
1277         (JSC::dateProtoFuncGetUTCMinutes):
1278         (JSC::dateProtoFuncGetSeconds):
1279         (JSC::dateProtoFuncGetUTCSeconds):
1280         (JSC::dateProtoFuncGetMilliSeconds):
1281         (JSC::dateProtoFuncGetUTCMilliseconds):
1282         (JSC::dateProtoFuncGetTimezoneOffset):
1283         (JSC::dateProtoFuncSetTime):
1284         (JSC::setNewValueFromTimeArgs):
1285         (JSC::setNewValueFromDateArgs):
1286         (JSC::dateProtoFuncSetMilliSeconds):
1287         (JSC::dateProtoFuncSetUTCMilliseconds):
1288         (JSC::dateProtoFuncSetSeconds):
1289         (JSC::dateProtoFuncSetUTCSeconds):
1290         (JSC::dateProtoFuncSetMinutes):
1291         (JSC::dateProtoFuncSetUTCMinutes):
1292         (JSC::dateProtoFuncSetHours):
1293         (JSC::dateProtoFuncSetUTCHours):
1294         (JSC::dateProtoFuncSetDate):
1295         (JSC::dateProtoFuncSetUTCDate):
1296         (JSC::dateProtoFuncSetMonth):
1297         (JSC::dateProtoFuncSetUTCMonth):
1298         (JSC::dateProtoFuncSetFullYear):
1299         (JSC::dateProtoFuncSetUTCFullYear):
1300         (JSC::dateProtoFuncSetYear):
1301         (JSC::dateProtoFuncGetYear):
1302         (JSC::dateProtoFuncToJSON):
1303         * runtime/ErrorConstructor.cpp:
1304         (JSC::callErrorConstructor):
1305         * runtime/ErrorPrototype.cpp:
1306         (JSC::errorProtoFuncToString):
1307         * runtime/FunctionConstructor.cpp:
1308         (JSC::callFunctionConstructor):
1309         * runtime/FunctionPrototype.cpp:
1310         (JSC::callFunctionPrototype):
1311         (JSC::functionProtoFuncToString):
1312         (JSC::functionProtoFuncApply):
1313         (JSC::functionProtoFuncCall):
1314         * runtime/JSGlobalObjectFunctions.cpp:
1315         (JSC::encode):
1316         (JSC::decode):
1317         (JSC::globalFuncEval):
1318         (JSC::globalFuncParseInt):
1319         (JSC::globalFuncParseFloat):
1320         (JSC::globalFuncIsNaN):
1321         (JSC::globalFuncIsFinite):
1322         (JSC::globalFuncDecodeURI):
1323         (JSC::globalFuncDecodeURIComponent):
1324         (JSC::globalFuncEncodeURI):
1325         (JSC::globalFuncEncodeURIComponent):
1326         (JSC::globalFuncEscape):
1327         (JSC::globalFuncUnescape):
1328         (JSC::globalFuncJSCPrint):
1329         * runtime/JSGlobalObjectFunctions.h:
1330         * runtime/JSONObject.cpp:
1331         (JSC::JSONProtoFuncParse):
1332         (JSC::JSONProtoFuncStringify):
1333         * runtime/JSString.h:
1334         * runtime/MathObject.cpp:
1335         (JSC::mathProtoFuncAbs):
1336         (JSC::mathProtoFuncACos):
1337         (JSC::mathProtoFuncASin):
1338         (JSC::mathProtoFuncATan):
1339         (JSC::mathProtoFuncATan2):
1340         (JSC::mathProtoFuncCeil):
1341         (JSC::mathProtoFuncCos):
1342         (JSC::mathProtoFuncExp):
1343         (JSC::mathProtoFuncFloor):
1344         (JSC::mathProtoFuncLog):
1345         (JSC::mathProtoFuncMax):
1346         (JSC::mathProtoFuncMin):
1347         (JSC::mathProtoFuncPow):
1348         (JSC::mathProtoFuncRandom):
1349         (JSC::mathProtoFuncRound):
1350         (JSC::mathProtoFuncSin):
1351         (JSC::mathProtoFuncSqrt):
1352         (JSC::mathProtoFuncTan):
1353         * runtime/NativeErrorConstructor.cpp:
1354         (JSC::callNativeErrorConstructor):
1355         * runtime/NumberConstructor.cpp:
1356         (JSC::callNumberConstructor):
1357         * runtime/NumberPrototype.cpp:
1358         (JSC::numberProtoFuncToString):
1359         (JSC::numberProtoFuncToLocaleString):
1360         (JSC::numberProtoFuncValueOf):
1361         (JSC::numberProtoFuncToFixed):
1362         (JSC::numberProtoFuncToExponential):
1363         (JSC::numberProtoFuncToPrecision):
1364         * runtime/ObjectConstructor.cpp:
1365         (JSC::callObjectConstructor):
1366         (JSC::objectConstructorGetPrototypeOf):
1367         (JSC::objectConstructorGetOwnPropertyDescriptor):
1368         (JSC::objectConstructorGetOwnPropertyNames):
1369         (JSC::objectConstructorKeys):
1370         (JSC::objectConstructorDefineProperty):
1371         (JSC::objectConstructorDefineProperties):
1372         (JSC::objectConstructorCreate):
1373         * runtime/ObjectPrototype.cpp:
1374         (JSC::objectProtoFuncValueOf):
1375         (JSC::objectProtoFuncHasOwnProperty):
1376         (JSC::objectProtoFuncIsPrototypeOf):
1377         (JSC::objectProtoFuncDefineGetter):
1378         (JSC::objectProtoFuncDefineSetter):
1379         (JSC::objectProtoFuncLookupGetter):
1380         (JSC::objectProtoFuncLookupSetter):
1381         (JSC::objectProtoFuncPropertyIsEnumerable):
1382         (JSC::objectProtoFuncToLocaleString):
1383         (JSC::objectProtoFuncToString):
1384         * runtime/ObjectPrototype.h:
1385         * runtime/Operations.h:
1386         (JSC::jsString):
1387         * runtime/RegExpConstructor.cpp:
1388         (JSC::callRegExpConstructor):
1389         * runtime/RegExpObject.cpp:
1390         (JSC::RegExpObject::test):
1391         (JSC::RegExpObject::exec):
1392         (JSC::callRegExpObject):
1393         (JSC::RegExpObject::match):
1394         * runtime/RegExpObject.h:
1395         * runtime/RegExpPrototype.cpp:
1396         (JSC::regExpProtoFuncTest):
1397         (JSC::regExpProtoFuncExec):
1398         (JSC::regExpProtoFuncCompile):
1399         (JSC::regExpProtoFuncToString):
1400         * runtime/StringConstructor.cpp:
1401         (JSC::stringFromCharCodeSlowCase):
1402         (JSC::stringFromCharCode):
1403         (JSC::callStringConstructor):
1404         * runtime/StringPrototype.cpp:
1405         (JSC::stringProtoFuncReplace):
1406         (JSC::stringProtoFuncToString):
1407         (JSC::stringProtoFuncCharAt):
1408         (JSC::stringProtoFuncCharCodeAt):
1409         (JSC::stringProtoFuncConcat):
1410         (JSC::stringProtoFuncIndexOf):
1411         (JSC::stringProtoFuncLastIndexOf):
1412         (JSC::stringProtoFuncMatch):
1413         (JSC::stringProtoFuncSearch):
1414         (JSC::stringProtoFuncSlice):
1415         (JSC::stringProtoFuncSplit):
1416         (JSC::stringProtoFuncSubstr):
1417         (JSC::stringProtoFuncSubstring):
1418         (JSC::stringProtoFuncToLowerCase):
1419         (JSC::stringProtoFuncToUpperCase):
1420         (JSC::stringProtoFuncLocaleCompare):
1421         (JSC::stringProtoFuncBig):
1422         (JSC::stringProtoFuncSmall):
1423         (JSC::stringProtoFuncBlink):
1424         (JSC::stringProtoFuncBold):
1425         (JSC::stringProtoFuncFixed):
1426         (JSC::stringProtoFuncItalics):
1427         (JSC::stringProtoFuncStrike):
1428         (JSC::stringProtoFuncSub):
1429         (JSC::stringProtoFuncSup):
1430         (JSC::stringProtoFuncFontcolor):
1431         (JSC::stringProtoFuncFontsize):
1432         (JSC::stringProtoFuncAnchor):
1433         (JSC::stringProtoFuncLink):
1434         (JSC::stringProtoFuncTrim):
1435         (JSC::stringProtoFuncTrimLeft):
1436         (JSC::stringProtoFuncTrimRight):
1437
1438 2010-05-28  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
1439
1440         Reviewed by Geoffrey Garen.
1441
1442         Fix the JSObjectSetPrototype function.
1443
1444         A cycle in a prototype chain can cause an application hang or
1445         even crash.
1446         A check for a prototype chain cycles was added to
1447         the JSObjectSetPrototype.
1448
1449         JSObjectSetPrototype doesn't check for cycle in prototype chain.
1450         https://bugs.webkit.org/show_bug.cgi?id=39360
1451
1452         * API/JSObjectRef.cpp:
1453         (JSObjectSetPrototype):
1454         * API/tests/testapi.c:
1455         (assertTrue):
1456         (checkForCycleInPrototypeChain):
1457         (main):
1458         * runtime/JSObject.cpp:
1459         (JSC::JSObject::put):
1460         * runtime/JSObject.h:
1461         (JSC::JSObject::setPrototypeWithCycleCheck):
1462
1463 2010-05-28  Chao-ying Fu  <fu@mips.com>
1464
1465         Reviewed by Eric Seidel.
1466
1467         Fix MIPS JIT DoubleGreaterThanOrEqual Operands
1468         https://bugs.webkit.org/show_bug.cgi?id=39504
1469
1470         Swapped two operands of left and right for DoubleGreaterThanOrEqual.
1471         This patch fixed two layout tests as follows.
1472         fast/js/comparison-operators-greater.html
1473         fast/js/comparison-operators-less.html
1474
1475         * assembler/MacroAssemblerMIPS.h:
1476         (JSC::MacroAssemblerMIPS::branchDouble):
1477
1478 2010-05-28  Gavin Barraclough  <barraclough@apple.com>
1479
1480         Reviewed by Geoff Garen.
1481
1482         Move jit compilation from linking thunks into cti_vm_lazyLink methods.
1483
1484         * jit/JITOpcodes.cpp:
1485         (JSC::JIT::privateCompileCTIMachineTrampolines):
1486         * jit/JITOpcodes32_64.cpp:
1487         (JSC::JIT::privateCompileCTIMachineTrampolines):
1488         * jit/JITStubs.cpp:
1489         (JSC::DEFINE_STUB_FUNCTION):
1490
1491 2010-05-28  Gavin Barraclough  <barraclough@apple.com>
1492
1493         Reviewed by Sam Weinig.
1494
1495         Bug 39898 - Move arity check into callee.
1496         
1497         We can reduce the size of the virtual call trampolines by moving the arity check
1498         into the callee functions.  As a following step we will be able to remove the
1499         check for native function / codeblocks by performing translation in a lazy stub.
1500         
1501         * interpreter/CallFrame.h:
1502         (JSC::ExecState::init):
1503         (JSC::ExecState::setReturnPC):
1504         * jit/JIT.cpp:
1505         (JSC::JIT::privateCompile):
1506         (JSC::JIT::linkCall):
1507         (JSC::JIT::linkConstruct):
1508         * jit/JIT.h:
1509         (JSC::JIT::compile):
1510         * jit/JITOpcodes.cpp:
1511         (JSC::JIT::privateCompileCTIMachineTrampolines):
1512         * jit/JITOpcodes32_64.cpp:
1513         (JSC::JIT::privateCompileCTIMachineTrampolines):
1514         * jit/JITStubs.cpp:
1515         (JSC::DEFINE_STUB_FUNCTION):
1516         * runtime/Executable.cpp:
1517         (JSC::FunctionExecutable::generateJITCodeForCall):
1518         (JSC::FunctionExecutable::generateJITCodeForConstruct):
1519         (JSC::FunctionExecutable::reparseExceptionInfo):
1520         * runtime/Executable.h:
1521         (JSC::NativeExecutable::NativeExecutable):
1522         (JSC::FunctionExecutable::generatedJITCodeForCallWithArityCheck):
1523         (JSC::FunctionExecutable::generatedJITCodeForConstructWithArityCheck):
1524
1525 2010-05-27  Luiz Agostini  <luiz.agostini@openbossa.org>
1526
1527         Reviewed by Darin Adler.
1528
1529         UTF-16 code points compare() for String objects
1530         https://bugs.webkit.org/show_bug.cgi?id=39701
1531
1532         Moving compare() implementation from UString to StringImpl for it to be shared
1533         with String. Adding overloaded free functions codePointCompare() in StringImpl
1534         and WTFString. Renaming function compare in UString to codePointCompare to be
1535         consistent.
1536
1537         * runtime/JSArray.cpp:
1538         (JSC::compareByStringPairForQSort):
1539         * runtime/UString.cpp:
1540         * runtime/UString.h:
1541         (JSC::codePointCompare):
1542         * wtf/text/StringImpl.cpp:
1543         (WebCore::codePointCompare):
1544         * wtf/text/StringImpl.h:
1545         * wtf/text/WTFString.cpp:
1546         (WebCore::codePointCompare):
1547         * wtf/text/WTFString.h:
1548
1549 2010-05-26  Darin Adler  <darin@apple.com>
1550
1551         Reviewed by Kent Tamura.
1552
1553         Null characters handled incorrectly in ToNumber conversion
1554         https://bugs.webkit.org/show_bug.cgi?id=38088
1555
1556         * runtime/JSGlobalObjectFunctions.cpp:
1557         (JSC::parseInt): Changed code to use UTF8String().data() instead of
1558         ascii() to fix the thread safety issue. Code path is covered by existing
1559         tests in run-javascriptcore-tests.
1560         (JSC::parseFloat): Moved comment to UString::toDouble since the issue
1561         affects all clients, not just parseFloat. Specifically, this also affects
1562         standard JavaScript numeric conversion, ToNumber.
1563
1564         * runtime/UString.cpp:
1565         (JSC::UString::toDouble): Added a comment about incorrect space skipping.
1566         Changed trailing junk check to use the length of the CString instead of
1567         checking for a null character. Also got rid of a little unneeded logic
1568         in the case where we tolerate trailing junk.
1569
1570 2010-05-27  Nathan Lawrence  <nlawrence@apple.com>
1571
1572         Reviewed by Geoffrey Garen.
1573
1574         Search for the new allocation one word at a time.  Improves
1575         performance on SunSpider by approximately 1%.
1576         http://bugs.webkit.org/show_bug.cgi?id=39758
1577
1578         * runtime/Collector.cpp:
1579         (JSC::Heap::allocate):
1580         * runtime/Collector.h:
1581         (JSC::CollectorBitmap::advanceToNextPossibleFreeCell):
1582
1583 2010-05-27  Kevin Ollivier  <kevino@theolliviers.com>
1584
1585         [wx] Build fixes for Windows after recent changes.
1586
1587         * wscript:
1588
1589 2010-05-27  Gustavo Noronha Silva  <gns@gnome.org>
1590
1591         More build fixage for make dist.
1592
1593         * GNUmakefile.am:
1594
1595 2010-05-27  Kwang Yul Seo  <skyul@company100.net>
1596
1597         Reviewed by Darin Adler.
1598
1599         RVCT does not have strnstr.
1600         https://bugs.webkit.org/show_bug.cgi?id=39719
1601
1602         Add COMPILER(RVCT) guard to strnstr in StringExtras.h as RVCT does not provide strnstr.
1603
1604         * wtf/StringExtras.h:
1605
1606 2010-05-26  Gavin Barraclough  <barraclough@apple.com>
1607
1608         Reviewed by Oliver Hunt.
1609
1610         Bug 39795 - Add support for YARR JIT generation of greedy quantified parens at the end of the main disjunction.
1611         (relanding r60267)
1612
1613         If the last item in a main disjunction is a quantified set of parentheses,
1614         this is easier to code generate for than the general case for quantified
1615         parentheses. This is because we never need to backtrack into the parentheses
1616         - the first match will be the final and accepted match.
1617
1618         This patch also somewhat reverts a recent change to when fallback to PCRE
1619         occurs. At the minute the compiler is tracking on patterns which will
1620         require JIT fallback. This is handy from a performance perspective (it saves
1621         the failed attempt at JIT compilation), but it means introducing knowledge
1622         of the JITs capabilities into the other layers of the regex compilers. For
1623         the specific feature of back-references, add a flag tracking their presence
1624         on the pattern, and make these expressions fallback without attempting to
1625         JIT. For parentheses, return to detecting which cases are have or have not
1626         been handled during JIT compilation.
1627
1628         18% progression on tagcloud, ~1.5% overall on sunspidey.
1629
1630         * yarr/RegexCompiler.cpp:
1631         (JSC::Yarr::RegexPatternConstructor::atomBackReference):
1632         (JSC::Yarr::RegexPatternConstructor::quantifyAtom):
1633         * yarr/RegexJIT.cpp:
1634         (JSC::Yarr::RegexGenerator::TermGenerationState::isLastTerm):
1635         (JSC::Yarr::RegexGenerator::TermGenerationState::isMainDisjunction):
1636         (JSC::Yarr::RegexGenerator::generateParenthesesGreedyNoBacktrack):
1637         (JSC::Yarr::RegexGenerator::generateTerm):
1638         (JSC::Yarr::RegexGenerator::RegexGenerator):
1639         (JSC::Yarr::RegexGenerator::shouldFallBack):
1640         (JSC::Yarr::jitCompileRegex):
1641         * yarr/RegexPattern.h:
1642         (JSC::Yarr::RegexPattern::RegexPattern):
1643         (JSC::Yarr::RegexPattern::reset):
1644
1645 2010-05-26  Gavin Barraclough  <barraclough@apple.com>
1646
1647         Reviewed by NOBODY (revert).
1648
1649         Temporarily rolling out r60267, I appear to have hoesed perf at the last minute. :-/ Fixing.
1650
1651         * yarr/RegexCompiler.cpp:
1652         (JSC::Yarr::RegexPatternConstructor::atomBackReference):
1653         (JSC::Yarr::RegexPatternConstructor::quantifyAtom):
1654         * yarr/RegexJIT.cpp:
1655         (JSC::Yarr::RegexGenerator::TermGenerationState::term):
1656         (JSC::Yarr::RegexGenerator::generateParenthesesSingle):
1657         (JSC::Yarr::RegexGenerator::generateTerm):
1658         (JSC::Yarr::RegexGenerator::RegexGenerator):
1659         (JSC::Yarr::jitCompileRegex):
1660         * yarr/RegexPattern.h:
1661         (JSC::Yarr::RegexPattern::RegexPattern):
1662         (JSC::Yarr::RegexPattern::reset):
1663
1664 2010-05-26  Gustavo Noronha Silva  <gns@gnome.org>
1665
1666         Build fixes for make distcheck.
1667
1668         * GNUmakefile.am:
1669
1670 2010-05-26  Gavin Barraclough  <barraclough@apple.com>
1671
1672         Reviewed by Oliver Hunt.
1673
1674         Bug 39795 - Add support for YARR JIT generation of greedy quantified parens at the end of the main disjunction.
1675
1676         If the last item in a main disjunction is a quantified set of parentheses,
1677         this is easier to code generate for than the general case for quantified
1678         parentheses. This is because we never need to backtrack into the parentheses
1679         - the first match will be the final and accepted match.
1680
1681         This patch also somewhat reverts a recent change to when fallback to PCRE
1682         occurs. At the minute the compiler is tracking on patterns which will
1683         require JIT fallback. This is handy from a performance perspective (it saves
1684         the failed attempt at JIT compilation), but it means introducing knowledge
1685         of the JITs capabilities into the other layers of the regex compilers. For
1686         the specific feature of back-references, add a flag tracking their presence
1687         on the pattern, and make these expressions fallback without attempting to
1688         JIT. For parentheses, return to detecting which cases are have or have not
1689         been handled during JIT compilation.
1690
1691         18% progression on tagcloud, ~1.5% overall on sunspidey.
1692
1693         * yarr/RegexCompiler.cpp:
1694         (JSC::Yarr::RegexPatternConstructor::atomBackReference):
1695         (JSC::Yarr::RegexPatternConstructor::quantifyAtom):
1696         * yarr/RegexJIT.cpp:
1697         (JSC::Yarr::RegexGenerator::TermGenerationState::isLastTerm):
1698         (JSC::Yarr::RegexGenerator::TermGenerationState::isMainDisjunction):
1699         (JSC::Yarr::RegexGenerator::generateParenthesesGreedyNoBacktrack):
1700         (JSC::Yarr::RegexGenerator::generateTerm):
1701         (JSC::Yarr::RegexGenerator::RegexGenerator):
1702         (JSC::Yarr::RegexGenerator::shouldFallBack):
1703         (JSC::Yarr::jitCompileRegex):
1704         * yarr/RegexPattern.h:
1705         (JSC::Yarr::RegexPattern::RegexPattern):
1706         (JSC::Yarr::RegexPattern::reset):
1707
1708 2010-05-26  Geoffrey Garen  <ggaren@apple.com>
1709
1710         Reviewed by Sam Weinig.
1711
1712         Fixed a crash seen on the Leopard bot, caused by merge.
1713
1714         * jit/JITStubs.cpp:
1715         (JSC::DEFINE_STUB_FUNCTION): Get the return address from the callframe,
1716         since it's no longer passed to us as an argument.
1717
1718 2010-05-25  Geoffrey Garen  <ggaren@apple.com>
1719
1720         Fixed build failure caused by merge.
1721
1722         * jit/JITStubs.cpp:
1723         (JSC::DEFINE_STUB_FUNCTION): On error, return a single value, since this
1724         function no longer returns a pair.
1725
1726 2010-05-25  Geoffrey Garen  <ggaren@apple.com>
1727
1728         Reviewed by Oliver Hunt.
1729
1730         <rdar://problem/8020221>
1731         
1732         Fixed a crash seen on Windows when calling a function with too many
1733         arguments.
1734         
1735         SunSpider reports no change.
1736         
1737         No test because the ASSERT I added fires in existing tests.
1738
1739         * jit/JITStubs.cpp:
1740         (JSC::DEFINE_STUB_FUNCTION): Make sure to grow the registerFile when too
1741         many arguments have been provided, since the caller only allocated enough
1742         registerFile space for the arguments it provided, not enough for the extra
1743         copy of arguments we're going to need.
1744
1745 2010-05-25  Kwang Yul Seo  <skyul@company100.net>
1746
1747         Reviewed by Darin Adler.
1748
1749         Build fix for JSFunction
1750         https://bugs.webkit.org/show_bug.cgi?id=39658
1751
1752         MSVC can't compile one of JSFunction constructors when JIT is disabled.
1753         "PassRefPtr<NativeExecutable>" causes the compile error as NativeExecutable is not defined. 
1754         Add ENABLE(JIT) guard to the constructor.
1755
1756         * runtime/JSFunction.cpp:
1757         (JSC::JSFunction::JSFunction):
1758         * runtime/JSFunction.h:
1759
1760 2010-05-24  Gavin Barraclough  <barraclough@apple.com>
1761
1762         Reviewed by Sam Weinig.
1763
1764         Bug 39643 - Clean up code generation in the JIT of stub function calls for op_call.
1765
1766         Presently, as soon as op-call strays off the hot path we set up a set of values on
1767         the stack to be passed as arguments to cti functions, in case any should be called.
1768
1769         Instead, hoist the setup of the callframe to happen slightly sooner, and make the
1770         cti functions to compile & check arity read these values from the callframe. This
1771         allows up to remove the deprecated methods to manually set up cti arguments, rather
1772         than using JITStubCall.h.
1773
1774         * interpreter/CallFrame.h:
1775         * jit/JIT.h:
1776         * jit/JITCall.cpp:
1777         (JSC::JIT::compileOpCallInitializeCallFrame):
1778         (JSC::JIT::compileOpCallVarargs):
1779         (JSC::JIT::compileOpCallVarargsSlowCase):
1780         (JSC::JIT::compileOpCall):
1781         (JSC::JIT::compileOpCallSlowCase):
1782         * jit/JITCall32_64.cpp:
1783         (JSC::JIT::compileOpCallInitializeCallFrame):
1784         (JSC::JIT::compileOpCallVarargs):
1785         (JSC::JIT::compileOpCallVarargsSlowCase):
1786         (JSC::JIT::compileOpCall):
1787         (JSC::JIT::compileOpCallSlowCase):
1788         * jit/JITInlineMethods.h:
1789         * jit/JITOpcodes.cpp:
1790         (JSC::JIT::privateCompileCTIMachineTrampolines):
1791         * jit/JITOpcodes32_64.cpp:
1792         (JSC::JIT::privateCompileCTIMachineTrampolines):
1793         * jit/JITStubs.cpp:
1794         (JSC::DEFINE_STUB_FUNCTION):
1795         * jit/JITStubs.h:
1796         (JSC::):
1797
1798 2010-05-24  Gavin Barraclough  <barraclough@apple.com>
1799
1800         Reviewed by Sam Weinig.
1801         Relanding r60075.
1802
1803         * bytecode/CodeBlock.cpp:
1804         (JSC::CodeBlock::dump):
1805         (JSC::CodeBlock::getByIdExceptionInfoForBytecodeOffset):
1806         * bytecode/CodeBlock.h:
1807         * bytecode/Opcode.h:
1808         * bytecompiler/BytecodeGenerator.cpp:
1809         (JSC::BytecodeGenerator::BytecodeGenerator):
1810         (JSC::BytecodeGenerator::emitConstruct):
1811         * bytecompiler/BytecodeGenerator.h:
1812         (JSC::BytecodeGenerator::emitGetByIdExceptionInfo):
1813         * interpreter/Interpreter.cpp:
1814         (JSC::Interpreter::privateExecute):
1815         * jit/JIT.cpp:
1816         (JSC::JIT::privateCompileMainPass):
1817         * jit/JIT.h:
1818         * jit/JITCall.cpp:
1819         (JSC::JIT::compileOpCall):
1820         (JSC::JIT::compileOpCallSlowCase):
1821         * jit/JITCall32_64.cpp:
1822         (JSC::JIT::compileOpCall):
1823         (JSC::JIT::compileOpCallSlowCase):
1824         * jit/JITOpcodes.cpp:
1825         (JSC::JIT::privateCompileCTIMachineTrampolines):
1826         (JSC::JIT::privateCompileCTINativeCall):
1827         (JSC::JIT::emit_op_neq_null):
1828         (JSC::JIT::emit_op_convert_this):
1829         (JSC::JIT::emit_op_get_callee):
1830         (JSC::JIT::emit_op_create_this):
1831         * jit/JITOpcodes32_64.cpp:
1832         (JSC::JIT::privateCompileCTIMachineTrampolines):
1833         (JSC::JIT::privateCompileCTINativeCall):
1834         (JSC::JIT::emit_op_get_callee):
1835         (JSC::JIT::emit_op_create_this):
1836         * jit/JITStubs.cpp:
1837         (JSC::DEFINE_STUB_FUNCTION):
1838         (JSC::JITThunks::hostFunctionStub):
1839         * jit/JITStubs.h:
1840         (JSC::JITThunks::ctiNativeConstruct):
1841         (JSC::):
1842         * runtime/ExceptionHelpers.cpp:
1843         (JSC::createNotAnObjectError):
1844         * runtime/Executable.h:
1845         (JSC::NativeExecutable::create):
1846         (JSC::NativeExecutable::NativeExecutable):
1847         * runtime/JSFunction.cpp:
1848         (JSC::callHostFunctionAsConstructor):
1849         * runtime/JSFunction.h:
1850         * wtf/Platform.h:
1851
1852 == Rolled over to ChangeLog-2010-05-24 ==