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