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