2009-05-04 Maciej Stachowiak <mjs@apple.com>
[WebKit.git] / JavaScriptCore / ChangeLog
1 2009-05-04  Maciej Stachowiak  <mjs@apple.com>
2
3         Rubber stamped by Gavin.
4
5         - inline Vector::resize for a ~1.5% speedup on string-tagcloud
6
7         * wtf/Vector.h:
8         (WTF::Vector::resize): Inline
9
10 2009-05-03  Steve Falkenburg  <sfalken@apple.com>
11
12         Windows build fix.
13
14         * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln:
15
16 2009-05-03  Mark Rowe  <mrowe@apple.com>
17
18         Fix the 64-bit build.
19
20         * API/APICast.h:
21         (toJS):
22         (toRef):
23         * runtime/JSNumberCell.cpp:
24         (JSC::jsAPIMangledNumber):
25         * runtime/JSNumberCell.h:
26
27 2009-05-02  Sam Weinig  <sam@webkit.org>
28
29         Roll JSC API number marshaling back in one last time (I hope).
30
31 2009-05-03  Sam Weinig  <sam@webkit.org>
32
33         Roll JSC API number marshaling back out. It still breaks windows.
34
35 2009-05-03  Sam Weinig  <sam@webkit.org>
36
37         Roll JSC API number marshaling back in.
38
39 2009-05-02  Darin Adler  <darin@apple.com>
40
41         Reviewed by Maciej Stachowiak.
42
43         Bug 25519: streamline lexer by handling BOMs differently
44         https://bugs.webkit.org/show_bug.cgi?id=25519
45
46         Roughly 1% faster SunSpider.
47
48         * parser/Grammar.y: Tweak formatting a bit.
49
50         * parser/Lexer.cpp:
51         (JSC::Lexer::Lexer): Remove unnnecessary initialization of data members
52         that are set up by setCode.
53         (JSC::Lexer::currentOffset): Added. Used where the old code would look at
54         m_currentOffset.
55         (JSC::Lexer::shift1): Replaces the old shift function. No longer does anything
56         to handle BOM characters.
57         (JSC::Lexer::shift2): Ditto.
58         (JSC::Lexer::shift3): Ditto.
59         (JSC::Lexer::shift4): Ditto.
60         (JSC::Lexer::setCode): Updated for name change from yylineno to m_line.
61         Removed now-unused m_eatNextIdentifier, m_stackToken, and m_restrKeyword.
62         Replaced m_skipLF and m_skipCR with m_skipLineEnd. Replaced the old
63         m_length with m_codeEnd and m_currentOffset with m_codeStart. Added code
64         to scan for a BOM character and call copyCodeWithoutBOMs() if we find any.
65         (JSC::Lexer::copyCodeWithoutBOMs): Added.
66         (JSC::Lexer::nextLine): Updated for name change from yylineno to m_line.
67         (JSC::Lexer::makeIdentifier): Moved up higher in the file.
68         (JSC::Lexer::matchPunctuator): Moved up higher in the file and changed to
69         use a switch statement instead of just if statements.
70         (JSC::Lexer::isLineTerminator): Moved up higher in the file and changed to
71         have fewer branches.
72         (JSC::Lexer::lastTokenWasRestrKeyword): Added. This replaces the old
73         m_restrKeyword boolean.
74         (JSC::Lexer::isIdentStart): Moved up higher in the file. Changed to use
75         fewer branches in the ASCII but not identifier case.
76         (JSC::Lexer::isIdentPart): Ditto.
77         (JSC::Lexer::singleEscape): Moved up higher in the file.
78         (JSC::Lexer::convertOctal): Moved up higher in the file.
79         (JSC::Lexer::convertHex): Moved up higher in the file. Changed to use
80         toASCIIHexValue instead of rolling our own here.
81         (JSC::Lexer::convertUnicode): Ditto.
82         (JSC::Lexer::record8): Moved up higher in the file.
83         (JSC::Lexer::record16): Moved up higher in the file.
84         (JSC::Lexer::lex): Changed type of stringType to int. Replaced m_skipLF
85         and m_skipCR with m_skipLineEnd, which requires fewer branches in the
86         main lexer loop. Use currentOffset instead of m_currentOffset. Removed
87         unneeded m_stackToken. Use isASCIIDigit instead of isDecimalDigit.
88         Split out the two cases for InIdentifierOrKeyword and InIdentifier.
89         Added special case tight loops for identifiers and other simple states.
90         Removed a branch from the code that sets m_atLineStart to false using goto.
91         Streamlined the number-handling code so we don't check for the same types
92         twice for non-numeric cases and don't add a null to m_buffer8 when it's
93         not being used. Removed m_eatNextIdentifier, which wasn't working anyway,
94         and m_restrKeyword, which is redundant with m_lastToken. Set the
95         m_delimited flag without using a branch.
96         (JSC::Lexer::scanRegExp): Tweaked style a bit.
97         (JSC::Lexer::clear): Clear m_codeWithoutBOMs so we don't use memory after
98         parsing. Clear out UString objects in the more conventional way.
99         (JSC::Lexer::sourceCode): Made this no-longer inline since it has more
100         work to do in the case where we stripped BOMs.
101
102         * parser/Lexer.h: Renamed yylineno to m_lineNumber. Removed convertHex
103         function, which is the same as toASCIIHexValue. Removed isHexDigit
104         function, which is the same as isASCIIHedDigit. Replaced shift with four
105         separate shift functions. Removed isWhiteSpace function that passes
106         m_current, instead just passing m_current explicitly. Removed isOctalDigit,
107         which is the same as isASCIIOctalDigit. Eliminated unused arguments from
108         matchPunctuator. Added copyCoodeWithoutBOMs and currentOffset. Moved the
109         makeIdentifier function out of the header. Added lastTokenWasRestrKeyword
110         function. Added new constants for m_skipLineEnd. Removed unused yycolumn,
111         m_restrKeyword, m_skipLF, m_skipCR, m_eatNextIdentifier, m_stackToken,
112         m_position, m_length, m_currentOffset, m_nextOffset1, m_nextOffset2,
113         m_nextOffset3. Added m_skipLineEnd, m_codeStart, m_codeEnd, and
114         m_codeWithoutBOMs.
115
116         * parser/SourceProvider.h: Added hasBOMs function. In the future this can
117         be used to tell the lexer about strings known not to have BOMs.
118
119         * runtime/JSGlobalObjectFunctions.cpp:
120         (JSC::globalFuncUnescape): Changed to use isASCIIHexDigit.
121
122         * wtf/ASCIICType.h: Added using statements to match the design of the
123         other WTF headers.
124
125 2009-05-02  Ada Chan  <adachan@apple.com>
126
127         Fix windows build (when doing a clean build)
128
129         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
130
131 2009-05-02  Geoffrey Garen  <ggaren@apple.com>
132
133         Reviewed by Sam Weinig.
134
135         Simplified null-ish JSValues.
136         
137         Replaced calls to noValue() with calls to JSValue() (which is what
138         noValue() returned). Removed noValue().
139         
140         Replaced almost all uses of jsImpossibleValue() with uses of JSValue().
141         Its one remaining use is for construction of hash table deleted values.
142         For that specific task, I made a new, private constructor with a special
143         tag. Removed jsImpossibleValue().
144         
145         Removed "JSValue()" initialiazers, since default construction happens...
146         by default.
147
148         * API/JSCallbackObjectFunctions.h:
149         (JSC::::call):
150         * bytecompiler/BytecodeGenerator.cpp:
151         (JSC::BytecodeGenerator::emitLoad):
152         * bytecompiler/BytecodeGenerator.h:
153         * debugger/DebuggerCallFrame.cpp:
154         (JSC::DebuggerCallFrame::evaluate):
155         * debugger/DebuggerCallFrame.h:
156         (JSC::DebuggerCallFrame::DebuggerCallFrame):
157         * interpreter/CallFrame.h:
158         (JSC::ExecState::clearException):
159         * interpreter/Interpreter.cpp:
160         (JSC::Interpreter::privateExecute):
161         (JSC::Interpreter::retrieveLastCaller):
162         * interpreter/Register.h:
163         (JSC::Register::Register):
164         * jit/JITCall.cpp:
165         (JSC::JIT::unlinkCall):
166         (JSC::JIT::compileOpCallInitializeCallFrame):
167         (JSC::JIT::compileOpCall):
168         * jit/JITStubs.cpp:
169         (JSC::JITStubs::cti_op_call_eval):
170         (JSC::JITStubs::cti_vm_throw):
171         * profiler/Profiler.cpp:
172         (JSC::Profiler::willExecute):
173         (JSC::Profiler::didExecute):
174         * runtime/ArrayPrototype.cpp:
175         (JSC::getProperty):
176         * runtime/Completion.cpp:
177         (JSC::evaluate):
178         * runtime/Completion.h:
179         (JSC::Completion::Completion):
180         * runtime/GetterSetter.cpp:
181         (JSC::GetterSetter::getPrimitiveNumber):
182         * runtime/JSArray.cpp:
183         (JSC::JSArray::putSlowCase):
184         (JSC::JSArray::deleteProperty):
185         (JSC::JSArray::increaseVectorLength):
186         (JSC::JSArray::setLength):
187         (JSC::JSArray::pop):
188         (JSC::JSArray::sort):
189         (JSC::JSArray::compactForSorting):
190         * runtime/JSCell.cpp:
191         (JSC::JSCell::getJSNumber):
192         * runtime/JSCell.h:
193         (JSC::JSValue::getJSNumber):
194         * runtime/JSGlobalData.cpp:
195         (JSC::JSGlobalData::JSGlobalData):
196         * runtime/JSImmediate.h:
197         (JSC::JSImmediate::fromNumberOutsideIntegerRange):
198         (JSC::JSImmediate::from):
199         * runtime/JSNumberCell.cpp:
200         (JSC::jsNumberCell):
201         * runtime/JSObject.cpp:
202         (JSC::callDefaultValueFunction):
203         * runtime/JSObject.h:
204         (JSC::JSObject::getDirect):
205         * runtime/JSPropertyNameIterator.cpp:
206         (JSC::JSPropertyNameIterator::toPrimitive):
207         * runtime/JSPropertyNameIterator.h:
208         (JSC::JSPropertyNameIterator::next):
209         * runtime/JSValue.h:
210         (JSC::JSValue::):
211         (JSC::JSValueHashTraits::constructDeletedValue):
212         (JSC::JSValueHashTraits::isDeletedValue):
213         (JSC::JSValue::JSValue):
214         * runtime/JSWrapperObject.h:
215         (JSC::JSWrapperObject::JSWrapperObject):
216         * runtime/Operations.h:
217         (JSC::resolveBase):
218         * runtime/PropertySlot.h:
219         (JSC::PropertySlot::clearBase):
220         (JSC::PropertySlot::clearValue):
221
222 2009-05-02  Maciej Stachowiak  <mjs@apple.com>
223
224         Reviewed by Cameron Zwarich.
225
226         - speed up the lexer in various ways
227
228         ~2% command-line SunSpider speedup
229
230         * parser/Lexer.cpp:
231         (JSC::Lexer::setCode): Moved below shift() so it can inline.
232         (JSC::Lexer::scanRegExp):  Use resize(0) instead of clear() on Vectors, since the intent
233         here is not to free the underlying buffer.
234         (JSC::Lexer::lex): ditto; also, change the loop logic a bit for the main lexing loop
235         to avoid branching on !m_done twice per iteration. Now we only check it once.
236         (JSC::Lexer::shift): Make this ALWAYS_INLINE and tag an unusual branch as UNLIKELY
237         * parser/Lexer.h:
238         (JSC::Lexer::makeIdentifier): force to be ALWAYS_INLINE
239         * wtf/Vector.h:
240         (WTF::::append): force to be ALWAYS_INLINE (may have helped in ways other than parsing but it wasn't
241         getting inlined in a hot code path in the lexer)
242
243 2009-05-01  Steve Falkenburg  <sfalken@apple.com>
244
245         Windows build fix.
246
247         * JavaScriptCore.vcproj/JavaScriptCore.make:
248
249 2009-05-01  Sam Weinig  <sam@webkit.org>
250
251         Fix 64bit build.
252
253         * runtime/JSNumberCell.h:
254         (JSC::JSValue::JSValue):
255         * runtime/JSValue.h:
256         (JSC::jsNumber):
257
258 2009-05-01  Sam Weinig  <sam@webkit.org>
259
260         Roll out JavaScriptCore API number marshaling.
261
262         * API/APICast.h:
263         (toJS):
264         (toRef):
265         * API/JSBase.cpp:
266         (JSEvaluateScript):
267         (JSCheckScriptSyntax):
268         * API/JSCallbackConstructor.cpp:
269         (JSC::constructJSCallback):
270         * API/JSCallbackFunction.cpp:
271         (JSC::JSCallbackFunction::call):
272         * API/JSCallbackObjectFunctions.h:
273         (JSC::::getOwnPropertySlot):
274         (JSC::::put):
275         (JSC::::deleteProperty):
276         (JSC::::construct):
277         (JSC::::hasInstance):
278         (JSC::::call):
279         (JSC::::toNumber):
280         (JSC::::toString):
281         (JSC::::staticValueGetter):
282         (JSC::::callbackGetter):
283         * API/JSObjectRef.cpp:
284         (JSObjectMakeFunction):
285         (JSObjectMakeArray):
286         (JSObjectMakeDate):
287         (JSObjectMakeError):
288         (JSObjectMakeRegExp):
289         (JSObjectGetPrototype):
290         (JSObjectSetPrototype):
291         (JSObjectGetProperty):
292         (JSObjectSetProperty):
293         (JSObjectGetPropertyAtIndex):
294         (JSObjectSetPropertyAtIndex):
295         (JSObjectDeleteProperty):
296         (JSObjectCallAsFunction):
297         (JSObjectCallAsConstructor):
298         * API/JSValueRef.cpp:
299         (JSValueGetType):
300         (JSValueIsUndefined):
301         (JSValueIsNull):
302         (JSValueIsBoolean):
303         (JSValueIsNumber):
304         (JSValueIsString):
305         (JSValueIsObject):
306         (JSValueIsObjectOfClass):
307         (JSValueIsEqual):
308         (JSValueIsStrictEqual):
309         (JSValueIsInstanceOfConstructor):
310         (JSValueMakeUndefined):
311         (JSValueMakeNull):
312         (JSValueMakeBoolean):
313         (JSValueMakeNumber):
314         (JSValueMakeString):
315         (JSValueToBoolean):
316         (JSValueToNumber):
317         (JSValueToStringCopy):
318         (JSValueToObject):
319         (JSValueProtect):
320         (JSValueUnprotect):
321         * JavaScriptCore.exp:
322         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
323         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
324         * runtime/JSNumberCell.cpp:
325         * runtime/JSNumberCell.h:
326         * runtime/JSValue.h:
327
328 2009-05-01  Sam Weinig  <sam@webkit.org>
329
330         Fix windows build.
331
332         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
333         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
334
335 2009-05-01  Sam Weinig  <sam@webkit.org>
336
337         Fix the build.
338
339         * JavaScriptCore.exp:
340
341 2009-05-01  Sam Weinig  <sam@webkit.org>
342
343         Reviewed by Geoffrey "Too Far!" Garen.
344
345         Move JS number construction into JSValue.
346
347         * runtime/JSImmediate.h:
348         * runtime/JSNumberCell.h:
349         (JSC::JSValue::JSValue):
350         * runtime/JSValue.h:
351         (JSC::jsNumber):
352
353 2009-05-01  Sam Weinig  <sam@webkit.org>
354
355         Reviewed by Geoff "The Minneapolis" Garen.
356
357         Add mechanism to vend heap allocated JS numbers to JavaScriptCore API clients with a
358         representation that is independent of the number representation in the VM.
359         - Numbers leaving the interpreter are converted to a tagged JSNumberCell.
360         - The numbers coming into the interpreter (asserted to be the tagged JSNumberCell) are
361           converted back to the VM's internal number representation.
362
363         * API/APICast.h:
364         (toJS):
365         (toRef):
366         * API/JSBase.cpp:
367         (JSEvaluateScript):
368         (JSCheckScriptSyntax):
369         * API/JSCallbackConstructor.cpp:
370         (JSC::constructJSCallback):
371         * API/JSCallbackFunction.cpp:
372         (JSC::JSCallbackFunction::call):
373         * API/JSCallbackObjectFunctions.h:
374         (JSC::::getOwnPropertySlot):
375         (JSC::::put):
376         (JSC::::deleteProperty):
377         (JSC::::construct):
378         (JSC::::hasInstance):
379         (JSC::::call):
380         (JSC::::toNumber):
381         (JSC::::toString):
382         (JSC::::staticValueGetter):
383         (JSC::::callbackGetter):
384         * API/JSObjectRef.cpp:
385         (JSObjectMakeFunction):
386         (JSObjectMakeArray):
387         (JSObjectMakeDate):
388         (JSObjectMakeError):
389         (JSObjectMakeRegExp):
390         (JSObjectGetPrototype):
391         (JSObjectSetPrototype):
392         (JSObjectGetProperty):
393         (JSObjectSetProperty):
394         (JSObjectGetPropertyAtIndex):
395         (JSObjectSetPropertyAtIndex):
396         (JSObjectDeleteProperty):
397         (JSObjectCallAsFunction):
398         (JSObjectCallAsConstructor):
399         * API/JSValueRef.cpp:
400         (JSValueGetType):
401         (JSValueIsUndefined):
402         (JSValueIsNull):
403         (JSValueIsBoolean):
404         (JSValueIsNumber):
405         (JSValueIsString):
406         (JSValueIsObject):
407         (JSValueIsObjectOfClass):
408         (JSValueIsEqual):
409         (JSValueIsStrictEqual):
410         (JSValueIsInstanceOfConstructor):
411         (JSValueMakeUndefined):
412         (JSValueMakeNull):
413         (JSValueMakeBoolean):
414         (JSValueMakeNumber):
415         (JSValueMakeString):
416         (JSValueToBoolean):
417         (JSValueToNumber):
418         (JSValueToStringCopy):
419         (JSValueToObject):
420         (JSValueProtect):
421         (JSValueUnprotect):
422         * runtime/JSNumberCell.cpp:
423         (JSC::jsAPIMangledNumber):
424         * runtime/JSNumberCell.h:
425         (JSC::JSNumberCell::isAPIMangledNumber):
426         (JSC::JSNumberCell::):
427         (JSC::JSNumberCell::JSNumberCell):
428         (JSC::JSValue::isAPIMangledNumber):
429         * runtime/JSValue.h:
430
431 2009-05-01  Geoffrey Garen  <ggaren@apple.com>
432
433         Windows build fix take 6.
434
435         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
436
437 2009-05-01  Geoffrey Garen  <ggaren@apple.com>
438
439         Windows build fix take 5.
440
441         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
442
443 2009-05-01  Geoffrey Garen  <ggaren@apple.com>
444
445         Windows build fix take 4.
446
447         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
448
449 2009-05-01  Geoffrey Garen  <ggaren@apple.com>
450
451         Windows build fix take 3.
452
453         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
454
455 2009-05-01  Geoffrey Garen  <ggaren@apple.com>
456
457         Windows build fix take 2.
458
459         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
460
461 2009-05-01  Geoffrey Garen  <ggaren@apple.com>
462
463         Windows build fix take 1.
464
465         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
466         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
467
468 2009-05-01  Geoffrey Garen  <ggaren@apple.com>
469
470         Rubber Stamped by Sam Weinig.
471         
472         Renamed JSValuePtr => JSValue.
473
474         * API/APICast.h:
475         (toJS):
476         (toRef):
477         * API/JSCallbackConstructor.h:
478         (JSC::JSCallbackConstructor::createStructure):
479         * API/JSCallbackFunction.cpp:
480         (JSC::JSCallbackFunction::call):
481         * API/JSCallbackFunction.h:
482         (JSC::JSCallbackFunction::createStructure):
483         * API/JSCallbackObject.h:
484         (JSC::JSCallbackObject::createStructure):
485         * API/JSCallbackObjectFunctions.h:
486         (JSC::::asCallbackObject):
487         (JSC::::put):
488         (JSC::::hasInstance):
489         (JSC::::call):
490         (JSC::::staticValueGetter):
491         (JSC::::staticFunctionGetter):
492         (JSC::::callbackGetter):
493         * API/JSContextRef.cpp:
494         * API/JSObjectRef.cpp:
495         (JSObjectMakeConstructor):
496         (JSObjectSetPrototype):
497         (JSObjectGetProperty):
498         (JSObjectSetProperty):
499         (JSObjectGetPropertyAtIndex):
500         (JSObjectSetPropertyAtIndex):
501         * API/JSValueRef.cpp:
502         (JSValueGetType):
503         (JSValueIsUndefined):
504         (JSValueIsNull):
505         (JSValueIsBoolean):
506         (JSValueIsNumber):
507         (JSValueIsString):
508         (JSValueIsObject):
509         (JSValueIsObjectOfClass):
510         (JSValueIsEqual):
511         (JSValueIsStrictEqual):
512         (JSValueIsInstanceOfConstructor):
513         (JSValueToBoolean):
514         (JSValueToNumber):
515         (JSValueToStringCopy):
516         (JSValueToObject):
517         (JSValueProtect):
518         (JSValueUnprotect):
519         * JavaScriptCore.exp:
520         * bytecode/CodeBlock.cpp:
521         (JSC::valueToSourceString):
522         (JSC::constantName):
523         (JSC::CodeBlock::dump):
524         * bytecode/CodeBlock.h:
525         (JSC::CodeBlock::getConstant):
526         (JSC::CodeBlock::addUnexpectedConstant):
527         (JSC::CodeBlock::unexpectedConstant):
528         * bytecode/EvalCodeCache.h:
529         (JSC::EvalCodeCache::get):
530         * bytecompiler/BytecodeGenerator.cpp:
531         (JSC::BytecodeGenerator::addConstant):
532         (JSC::BytecodeGenerator::addUnexpectedConstant):
533         (JSC::BytecodeGenerator::emitLoad):
534         (JSC::BytecodeGenerator::emitGetScopedVar):
535         (JSC::BytecodeGenerator::emitPutScopedVar):
536         (JSC::BytecodeGenerator::emitNewError):
537         (JSC::keyForImmediateSwitch):
538         * bytecompiler/BytecodeGenerator.h:
539         (JSC::BytecodeGenerator::JSValueHashTraits::constructDeletedValue):
540         (JSC::BytecodeGenerator::JSValueHashTraits::isDeletedValue):
541         * debugger/Debugger.cpp:
542         (JSC::evaluateInGlobalCallFrame):
543         * debugger/Debugger.h:
544         * debugger/DebuggerActivation.cpp:
545         (JSC::DebuggerActivation::put):
546         (JSC::DebuggerActivation::putWithAttributes):
547         (JSC::DebuggerActivation::lookupGetter):
548         (JSC::DebuggerActivation::lookupSetter):
549         * debugger/DebuggerActivation.h:
550         (JSC::DebuggerActivation::createStructure):
551         * debugger/DebuggerCallFrame.cpp:
552         (JSC::DebuggerCallFrame::evaluate):
553         * debugger/DebuggerCallFrame.h:
554         (JSC::DebuggerCallFrame::DebuggerCallFrame):
555         (JSC::DebuggerCallFrame::exception):
556         * interpreter/CachedCall.h:
557         (JSC::CachedCall::CachedCall):
558         (JSC::CachedCall::call):
559         (JSC::CachedCall::setThis):
560         (JSC::CachedCall::setArgument):
561         * interpreter/CallFrame.cpp:
562         (JSC::CallFrame::thisValue):
563         (JSC::CallFrame::dumpCaller):
564         * interpreter/CallFrame.h:
565         (JSC::ExecState::setException):
566         (JSC::ExecState::exception):
567         (JSC::ExecState::exceptionSlot):
568         * interpreter/CallFrameClosure.h:
569         (JSC::CallFrameClosure::setArgument):
570         * interpreter/Interpreter.cpp:
571         (JSC::Interpreter::resolve):
572         (JSC::Interpreter::resolveSkip):
573         (JSC::Interpreter::resolveGlobal):
574         (JSC::Interpreter::resolveBase):
575         (JSC::Interpreter::resolveBaseAndProperty):
576         (JSC::Interpreter::resolveBaseAndFunc):
577         (JSC::isNotObject):
578         (JSC::Interpreter::callEval):
579         (JSC::Interpreter::unwindCallFrame):
580         (JSC::Interpreter::throwException):
581         (JSC::Interpreter::execute):
582         (JSC::Interpreter::prepareForRepeatCall):
583         (JSC::Interpreter::createExceptionScope):
584         (JSC::Interpreter::tryCachePutByID):
585         (JSC::Interpreter::tryCacheGetByID):
586         (JSC::Interpreter::privateExecute):
587         (JSC::Interpreter::retrieveArguments):
588         (JSC::Interpreter::retrieveCaller):
589         (JSC::Interpreter::retrieveLastCaller):
590         * interpreter/Interpreter.h:
591         * interpreter/Register.h:
592         (JSC::Register::):
593         (JSC::Register::Register):
594         (JSC::Register::jsValue):
595         * jit/JIT.cpp:
596         (JSC::):
597         (JSC::JIT::privateCompileMainPass):
598         * jit/JIT.h:
599         * jit/JITArithmetic.cpp:
600         (JSC::JIT::compileFastArith_op_mod):
601         * jit/JITCall.cpp:
602         (JSC::JIT::unlinkCall):
603         (JSC::JIT::compileOpCallInitializeCallFrame):
604         (JSC::JIT::compileOpCall):
605         * jit/JITCode.h:
606         (JSC::):
607         (JSC::JITCode::execute):
608         * jit/JITInlineMethods.h:
609         (JSC::JIT::emitGetVirtualRegister):
610         (JSC::JIT::getConstantOperand):
611         (JSC::JIT::emitPutJITStubArgFromVirtualRegister):
612         (JSC::JIT::emitInitRegister):
613         * jit/JITPropertyAccess.cpp:
614         (JSC::JIT::privateCompilePutByIdTransition):
615         (JSC::JIT::patchGetByIdSelf):
616         (JSC::JIT::patchPutByIdReplace):
617         (JSC::JIT::privateCompileGetByIdSelf):
618         (JSC::JIT::privateCompileGetByIdProto):
619         (JSC::JIT::privateCompileGetByIdSelfList):
620         (JSC::JIT::privateCompileGetByIdProtoList):
621         (JSC::JIT::privateCompileGetByIdChainList):
622         (JSC::JIT::privateCompileGetByIdChain):
623         (JSC::JIT::privateCompilePutByIdReplace):
624         * jit/JITStubs.cpp:
625         (JSC::JITStubs::tryCachePutByID):
626         (JSC::JITStubs::tryCacheGetByID):
627         (JSC::JITStubs::cti_op_convert_this):
628         (JSC::JITStubs::cti_op_add):
629         (JSC::JITStubs::cti_op_pre_inc):
630         (JSC::JITStubs::cti_op_loop_if_less):
631         (JSC::JITStubs::cti_op_loop_if_lesseq):
632         (JSC::JITStubs::cti_op_get_by_id_generic):
633         (JSC::JITStubs::cti_op_get_by_id):
634         (JSC::JITStubs::cti_op_get_by_id_second):
635         (JSC::JITStubs::cti_op_get_by_id_self_fail):
636         (JSC::JITStubs::cti_op_get_by_id_proto_list):
637         (JSC::JITStubs::cti_op_get_by_id_proto_list_full):
638         (JSC::JITStubs::cti_op_get_by_id_proto_fail):
639         (JSC::JITStubs::cti_op_get_by_id_array_fail):
640         (JSC::JITStubs::cti_op_get_by_id_string_fail):
641         (JSC::JITStubs::cti_op_instanceof):
642         (JSC::JITStubs::cti_op_del_by_id):
643         (JSC::JITStubs::cti_op_mul):
644         (JSC::JITStubs::cti_op_call_NotJSFunction):
645         (JSC::JITStubs::cti_op_resolve):
646         (JSC::JITStubs::cti_op_construct_NotJSConstruct):
647         (JSC::JITStubs::cti_op_get_by_val):
648         (JSC::JITStubs::cti_op_get_by_val_string):
649         (JSC::JITStubs::cti_op_get_by_val_byte_array):
650         (JSC::JITStubs::cti_op_resolve_func):
651         (JSC::JITStubs::cti_op_sub):
652         (JSC::JITStubs::cti_op_put_by_val):
653         (JSC::JITStubs::cti_op_put_by_val_array):
654         (JSC::JITStubs::cti_op_put_by_val_byte_array):
655         (JSC::JITStubs::cti_op_lesseq):
656         (JSC::JITStubs::cti_op_loop_if_true):
657         (JSC::JITStubs::cti_op_load_varargs):
658         (JSC::JITStubs::cti_op_negate):
659         (JSC::JITStubs::cti_op_resolve_base):
660         (JSC::JITStubs::cti_op_resolve_skip):
661         (JSC::JITStubs::cti_op_resolve_global):
662         (JSC::JITStubs::cti_op_div):
663         (JSC::JITStubs::cti_op_pre_dec):
664         (JSC::JITStubs::cti_op_jless):
665         (JSC::JITStubs::cti_op_not):
666         (JSC::JITStubs::cti_op_jtrue):
667         (JSC::JITStubs::cti_op_post_inc):
668         (JSC::JITStubs::cti_op_eq):
669         (JSC::JITStubs::cti_op_lshift):
670         (JSC::JITStubs::cti_op_bitand):
671         (JSC::JITStubs::cti_op_rshift):
672         (JSC::JITStubs::cti_op_bitnot):
673         (JSC::JITStubs::cti_op_resolve_with_base):
674         (JSC::JITStubs::cti_op_mod):
675         (JSC::JITStubs::cti_op_less):
676         (JSC::JITStubs::cti_op_neq):
677         (JSC::JITStubs::cti_op_post_dec):
678         (JSC::JITStubs::cti_op_urshift):
679         (JSC::JITStubs::cti_op_bitxor):
680         (JSC::JITStubs::cti_op_bitor):
681         (JSC::JITStubs::cti_op_call_eval):
682         (JSC::JITStubs::cti_op_throw):
683         (JSC::JITStubs::cti_op_next_pname):
684         (JSC::JITStubs::cti_op_typeof):
685         (JSC::JITStubs::cti_op_is_undefined):
686         (JSC::JITStubs::cti_op_is_boolean):
687         (JSC::JITStubs::cti_op_is_number):
688         (JSC::JITStubs::cti_op_is_string):
689         (JSC::JITStubs::cti_op_is_object):
690         (JSC::JITStubs::cti_op_is_function):
691         (JSC::JITStubs::cti_op_stricteq):
692         (JSC::JITStubs::cti_op_nstricteq):
693         (JSC::JITStubs::cti_op_to_jsnumber):
694         (JSC::JITStubs::cti_op_in):
695         (JSC::JITStubs::cti_op_switch_imm):
696         (JSC::JITStubs::cti_op_switch_char):
697         (JSC::JITStubs::cti_op_switch_string):
698         (JSC::JITStubs::cti_op_del_by_val):
699         (JSC::JITStubs::cti_op_new_error):
700         (JSC::JITStubs::cti_vm_throw):
701         * jit/JITStubs.h:
702         * jsc.cpp:
703         (functionPrint):
704         (functionDebug):
705         (functionGC):
706         (functionVersion):
707         (functionRun):
708         (functionLoad):
709         (functionSetSamplingFlag):
710         (functionClearSamplingFlag):
711         (functionReadline):
712         (functionQuit):
713         * parser/Nodes.cpp:
714         (JSC::processClauseList):
715         * profiler/ProfileGenerator.cpp:
716         (JSC::ProfileGenerator::addParentForConsoleStart):
717         * profiler/Profiler.cpp:
718         (JSC::Profiler::willExecute):
719         (JSC::Profiler::didExecute):
720         (JSC::Profiler::createCallIdentifier):
721         * profiler/Profiler.h:
722         * runtime/ArgList.cpp:
723         (JSC::MarkedArgumentBuffer::slowAppend):
724         * runtime/ArgList.h:
725         (JSC::MarkedArgumentBuffer::at):
726         (JSC::MarkedArgumentBuffer::append):
727         (JSC::ArgList::ArgList):
728         (JSC::ArgList::at):
729         * runtime/Arguments.cpp:
730         (JSC::Arguments::put):
731         * runtime/Arguments.h:
732         (JSC::Arguments::createStructure):
733         (JSC::asArguments):
734         * runtime/ArrayConstructor.cpp:
735         (JSC::callArrayConstructor):
736         * runtime/ArrayPrototype.cpp:
737         (JSC::getProperty):
738         (JSC::putProperty):
739         (JSC::arrayProtoFuncToString):
740         (JSC::arrayProtoFuncToLocaleString):
741         (JSC::arrayProtoFuncJoin):
742         (JSC::arrayProtoFuncConcat):
743         (JSC::arrayProtoFuncPop):
744         (JSC::arrayProtoFuncPush):
745         (JSC::arrayProtoFuncReverse):
746         (JSC::arrayProtoFuncShift):
747         (JSC::arrayProtoFuncSlice):
748         (JSC::arrayProtoFuncSort):
749         (JSC::arrayProtoFuncSplice):
750         (JSC::arrayProtoFuncUnShift):
751         (JSC::arrayProtoFuncFilter):
752         (JSC::arrayProtoFuncMap):
753         (JSC::arrayProtoFuncEvery):
754         (JSC::arrayProtoFuncForEach):
755         (JSC::arrayProtoFuncSome):
756         (JSC::arrayProtoFuncReduce):
757         (JSC::arrayProtoFuncReduceRight):
758         (JSC::arrayProtoFuncIndexOf):
759         (JSC::arrayProtoFuncLastIndexOf):
760         * runtime/BooleanConstructor.cpp:
761         (JSC::callBooleanConstructor):
762         (JSC::constructBooleanFromImmediateBoolean):
763         * runtime/BooleanConstructor.h:
764         * runtime/BooleanObject.h:
765         (JSC::asBooleanObject):
766         * runtime/BooleanPrototype.cpp:
767         (JSC::booleanProtoFuncToString):
768         (JSC::booleanProtoFuncValueOf):
769         * runtime/CallData.cpp:
770         (JSC::call):
771         * runtime/CallData.h:
772         * runtime/Collector.cpp:
773         (JSC::Heap::protect):
774         (JSC::Heap::unprotect):
775         (JSC::Heap::heap):
776         * runtime/Collector.h:
777         * runtime/Completion.cpp:
778         (JSC::evaluate):
779         * runtime/Completion.h:
780         (JSC::Completion::Completion):
781         (JSC::Completion::value):
782         (JSC::Completion::setValue):
783         * runtime/ConstructData.cpp:
784         (JSC::construct):
785         * runtime/ConstructData.h:
786         * runtime/DateConstructor.cpp:
787         (JSC::constructDate):
788         (JSC::callDate):
789         (JSC::dateParse):
790         (JSC::dateNow):
791         (JSC::dateUTC):
792         * runtime/DateInstance.h:
793         (JSC::asDateInstance):
794         * runtime/DatePrototype.cpp:
795         (JSC::dateProtoFuncToString):
796         (JSC::dateProtoFuncToUTCString):
797         (JSC::dateProtoFuncToDateString):
798         (JSC::dateProtoFuncToTimeString):
799         (JSC::dateProtoFuncToLocaleString):
800         (JSC::dateProtoFuncToLocaleDateString):
801         (JSC::dateProtoFuncToLocaleTimeString):
802         (JSC::dateProtoFuncGetTime):
803         (JSC::dateProtoFuncGetFullYear):
804         (JSC::dateProtoFuncGetUTCFullYear):
805         (JSC::dateProtoFuncToGMTString):
806         (JSC::dateProtoFuncGetMonth):
807         (JSC::dateProtoFuncGetUTCMonth):
808         (JSC::dateProtoFuncGetDate):
809         (JSC::dateProtoFuncGetUTCDate):
810         (JSC::dateProtoFuncGetDay):
811         (JSC::dateProtoFuncGetUTCDay):
812         (JSC::dateProtoFuncGetHours):
813         (JSC::dateProtoFuncGetUTCHours):
814         (JSC::dateProtoFuncGetMinutes):
815         (JSC::dateProtoFuncGetUTCMinutes):
816         (JSC::dateProtoFuncGetSeconds):
817         (JSC::dateProtoFuncGetUTCSeconds):
818         (JSC::dateProtoFuncGetMilliSeconds):
819         (JSC::dateProtoFuncGetUTCMilliseconds):
820         (JSC::dateProtoFuncGetTimezoneOffset):
821         (JSC::dateProtoFuncSetTime):
822         (JSC::setNewValueFromTimeArgs):
823         (JSC::setNewValueFromDateArgs):
824         (JSC::dateProtoFuncSetMilliSeconds):
825         (JSC::dateProtoFuncSetUTCMilliseconds):
826         (JSC::dateProtoFuncSetSeconds):
827         (JSC::dateProtoFuncSetUTCSeconds):
828         (JSC::dateProtoFuncSetMinutes):
829         (JSC::dateProtoFuncSetUTCMinutes):
830         (JSC::dateProtoFuncSetHours):
831         (JSC::dateProtoFuncSetUTCHours):
832         (JSC::dateProtoFuncSetDate):
833         (JSC::dateProtoFuncSetUTCDate):
834         (JSC::dateProtoFuncSetMonth):
835         (JSC::dateProtoFuncSetUTCMonth):
836         (JSC::dateProtoFuncSetFullYear):
837         (JSC::dateProtoFuncSetUTCFullYear):
838         (JSC::dateProtoFuncSetYear):
839         (JSC::dateProtoFuncGetYear):
840         * runtime/DatePrototype.h:
841         (JSC::DatePrototype::createStructure):
842         * runtime/ErrorConstructor.cpp:
843         (JSC::callErrorConstructor):
844         * runtime/ErrorPrototype.cpp:
845         (JSC::errorProtoFuncToString):
846         * runtime/ExceptionHelpers.cpp:
847         (JSC::createInterruptedExecutionException):
848         (JSC::createError):
849         (JSC::createStackOverflowError):
850         (JSC::createUndefinedVariableError):
851         (JSC::createErrorMessage):
852         (JSC::createInvalidParamError):
853         (JSC::createNotAConstructorError):
854         (JSC::createNotAFunctionError):
855         * runtime/ExceptionHelpers.h:
856         * runtime/FunctionConstructor.cpp:
857         (JSC::callFunctionConstructor):
858         * runtime/FunctionPrototype.cpp:
859         (JSC::callFunctionPrototype):
860         (JSC::functionProtoFuncToString):
861         (JSC::functionProtoFuncApply):
862         (JSC::functionProtoFuncCall):
863         * runtime/FunctionPrototype.h:
864         (JSC::FunctionPrototype::createStructure):
865         * runtime/GetterSetter.cpp:
866         (JSC::GetterSetter::toPrimitive):
867         (JSC::GetterSetter::getPrimitiveNumber):
868         * runtime/GetterSetter.h:
869         (JSC::asGetterSetter):
870         * runtime/InternalFunction.cpp:
871         (JSC::InternalFunction::displayName):
872         * runtime/InternalFunction.h:
873         (JSC::InternalFunction::createStructure):
874         (JSC::asInternalFunction):
875         * runtime/JSActivation.cpp:
876         (JSC::JSActivation::getOwnPropertySlot):
877         (JSC::JSActivation::put):
878         (JSC::JSActivation::putWithAttributes):
879         (JSC::JSActivation::argumentsGetter):
880         * runtime/JSActivation.h:
881         (JSC::JSActivation::createStructure):
882         (JSC::asActivation):
883         * runtime/JSArray.cpp:
884         (JSC::storageSize):
885         (JSC::JSArray::JSArray):
886         (JSC::JSArray::getOwnPropertySlot):
887         (JSC::JSArray::put):
888         (JSC::JSArray::putSlowCase):
889         (JSC::JSArray::deleteProperty):
890         (JSC::JSArray::setLength):
891         (JSC::JSArray::pop):
892         (JSC::JSArray::push):
893         (JSC::JSArray::mark):
894         (JSC::compareNumbersForQSort):
895         (JSC::JSArray::sortNumeric):
896         (JSC::JSArray::sort):
897         (JSC::JSArray::compactForSorting):
898         (JSC::JSArray::checkConsistency):
899         (JSC::constructArray):
900         * runtime/JSArray.h:
901         (JSC::JSArray::getIndex):
902         (JSC::JSArray::setIndex):
903         (JSC::JSArray::createStructure):
904         (JSC::asArray):
905         (JSC::isJSArray):
906         * runtime/JSByteArray.cpp:
907         (JSC::JSByteArray::createStructure):
908         (JSC::JSByteArray::put):
909         * runtime/JSByteArray.h:
910         (JSC::JSByteArray::getIndex):
911         (JSC::JSByteArray::setIndex):
912         (JSC::asByteArray):
913         (JSC::isJSByteArray):
914         * runtime/JSCell.cpp:
915         (JSC::JSCell::put):
916         (JSC::JSCell::getJSNumber):
917         * runtime/JSCell.h:
918         (JSC::asCell):
919         (JSC::JSValue::asCell):
920         (JSC::JSValue::isString):
921         (JSC::JSValue::isGetterSetter):
922         (JSC::JSValue::isObject):
923         (JSC::JSValue::getString):
924         (JSC::JSValue::getObject):
925         (JSC::JSValue::getCallData):
926         (JSC::JSValue::getConstructData):
927         (JSC::JSValue::getUInt32):
928         (JSC::JSValue::getTruncatedInt32):
929         (JSC::JSValue::getTruncatedUInt32):
930         (JSC::JSValue::mark):
931         (JSC::JSValue::marked):
932         (JSC::JSValue::toPrimitive):
933         (JSC::JSValue::getPrimitiveNumber):
934         (JSC::JSValue::toBoolean):
935         (JSC::JSValue::toNumber):
936         (JSC::JSValue::toString):
937         (JSC::JSValue::toObject):
938         (JSC::JSValue::toThisObject):
939         (JSC::JSValue::needsThisConversion):
940         (JSC::JSValue::toThisString):
941         (JSC::JSValue::getJSNumber):
942         * runtime/JSFunction.cpp:
943         (JSC::JSFunction::call):
944         (JSC::JSFunction::argumentsGetter):
945         (JSC::JSFunction::callerGetter):
946         (JSC::JSFunction::lengthGetter):
947         (JSC::JSFunction::getOwnPropertySlot):
948         (JSC::JSFunction::put):
949         (JSC::JSFunction::construct):
950         * runtime/JSFunction.h:
951         (JSC::JSFunction::createStructure):
952         (JSC::asFunction):
953         * runtime/JSGlobalData.h:
954         * runtime/JSGlobalObject.cpp:
955         (JSC::markIfNeeded):
956         (JSC::JSGlobalObject::put):
957         (JSC::JSGlobalObject::putWithAttributes):
958         (JSC::JSGlobalObject::reset):
959         (JSC::JSGlobalObject::resetPrototype):
960         * runtime/JSGlobalObject.h:
961         (JSC::JSGlobalObject::createStructure):
962         (JSC::JSGlobalObject::GlobalPropertyInfo::GlobalPropertyInfo):
963         (JSC::asGlobalObject):
964         (JSC::Structure::prototypeForLookup):
965         (JSC::Structure::prototypeChain):
966         (JSC::Structure::isValid):
967         * runtime/JSGlobalObjectFunctions.cpp:
968         (JSC::encode):
969         (JSC::decode):
970         (JSC::globalFuncEval):
971         (JSC::globalFuncParseInt):
972         (JSC::globalFuncParseFloat):
973         (JSC::globalFuncIsNaN):
974         (JSC::globalFuncIsFinite):
975         (JSC::globalFuncDecodeURI):
976         (JSC::globalFuncDecodeURIComponent):
977         (JSC::globalFuncEncodeURI):
978         (JSC::globalFuncEncodeURIComponent):
979         (JSC::globalFuncEscape):
980         (JSC::globalFuncUnescape):
981         (JSC::globalFuncJSCPrint):
982         * runtime/JSGlobalObjectFunctions.h:
983         * runtime/JSImmediate.cpp:
984         (JSC::JSImmediate::toThisObject):
985         (JSC::JSImmediate::toObject):
986         (JSC::JSImmediate::prototype):
987         (JSC::JSImmediate::toString):
988         * runtime/JSImmediate.h:
989         (JSC::JSImmediate::isImmediate):
990         (JSC::JSImmediate::isNumber):
991         (JSC::JSImmediate::isIntegerNumber):
992         (JSC::JSImmediate::isDoubleNumber):
993         (JSC::JSImmediate::isPositiveIntegerNumber):
994         (JSC::JSImmediate::isBoolean):
995         (JSC::JSImmediate::isUndefinedOrNull):
996         (JSC::JSImmediate::isEitherImmediate):
997         (JSC::JSImmediate::areBothImmediate):
998         (JSC::JSImmediate::areBothImmediateIntegerNumbers):
999         (JSC::JSImmediate::makeValue):
1000         (JSC::JSImmediate::makeInt):
1001         (JSC::JSImmediate::makeDouble):
1002         (JSC::JSImmediate::makeBool):
1003         (JSC::JSImmediate::makeUndefined):
1004         (JSC::JSImmediate::makeNull):
1005         (JSC::JSImmediate::doubleValue):
1006         (JSC::JSImmediate::intValue):
1007         (JSC::JSImmediate::uintValue):
1008         (JSC::JSImmediate::boolValue):
1009         (JSC::JSImmediate::rawValue):
1010         (JSC::JSImmediate::trueImmediate):
1011         (JSC::JSImmediate::falseImmediate):
1012         (JSC::JSImmediate::undefinedImmediate):
1013         (JSC::JSImmediate::nullImmediate):
1014         (JSC::JSImmediate::zeroImmediate):
1015         (JSC::JSImmediate::oneImmediate):
1016         (JSC::JSImmediate::impossibleValue):
1017         (JSC::JSImmediate::toBoolean):
1018         (JSC::JSImmediate::getTruncatedUInt32):
1019         (JSC::JSImmediate::fromNumberOutsideIntegerRange):
1020         (JSC::JSImmediate::from):
1021         (JSC::JSImmediate::getTruncatedInt32):
1022         (JSC::JSImmediate::toDouble):
1023         (JSC::JSImmediate::getUInt32):
1024         (JSC::JSValue::JSValue):
1025         (JSC::JSValue::isUndefinedOrNull):
1026         (JSC::JSValue::isBoolean):
1027         (JSC::JSValue::getBoolean):
1028         (JSC::JSValue::toInt32):
1029         (JSC::JSValue::toUInt32):
1030         (JSC::JSValue::isCell):
1031         (JSC::JSValue::isInt32Fast):
1032         (JSC::JSValue::getInt32Fast):
1033         (JSC::JSValue::isUInt32Fast):
1034         (JSC::JSValue::getUInt32Fast):
1035         (JSC::JSValue::makeInt32Fast):
1036         (JSC::JSValue::areBothInt32Fast):
1037         (JSC::JSFastMath::canDoFastBitwiseOperations):
1038         (JSC::JSFastMath::equal):
1039         (JSC::JSFastMath::notEqual):
1040         (JSC::JSFastMath::andImmediateNumbers):
1041         (JSC::JSFastMath::xorImmediateNumbers):
1042         (JSC::JSFastMath::orImmediateNumbers):
1043         (JSC::JSFastMath::canDoFastRshift):
1044         (JSC::JSFastMath::canDoFastUrshift):
1045         (JSC::JSFastMath::rightShiftImmediateNumbers):
1046         (JSC::JSFastMath::canDoFastAdditiveOperations):
1047         (JSC::JSFastMath::addImmediateNumbers):
1048         (JSC::JSFastMath::subImmediateNumbers):
1049         (JSC::JSFastMath::incImmediateNumber):
1050         (JSC::JSFastMath::decImmediateNumber):
1051         * runtime/JSNotAnObject.cpp:
1052         (JSC::JSNotAnObject::toPrimitive):
1053         (JSC::JSNotAnObject::getPrimitiveNumber):
1054         (JSC::JSNotAnObject::put):
1055         * runtime/JSNotAnObject.h:
1056         (JSC::JSNotAnObject::createStructure):
1057         * runtime/JSNumberCell.cpp:
1058         (JSC::JSNumberCell::toPrimitive):
1059         (JSC::JSNumberCell::getPrimitiveNumber):
1060         (JSC::JSNumberCell::getJSNumber):
1061         (JSC::jsNumberCell):
1062         * runtime/JSNumberCell.h:
1063         (JSC::JSNumberCell::createStructure):
1064         (JSC::isNumberCell):
1065         (JSC::asNumberCell):
1066         (JSC::jsNumber):
1067         (JSC::JSValue::isDoubleNumber):
1068         (JSC::JSValue::getDoubleNumber):
1069         (JSC::JSValue::isNumber):
1070         (JSC::JSValue::uncheckedGetNumber):
1071         (JSC::jsNaN):
1072         (JSC::JSValue::toJSNumber):
1073         (JSC::JSValue::getNumber):
1074         (JSC::JSValue::numberToInt32):
1075         (JSC::JSValue::numberToUInt32):
1076         * runtime/JSObject.cpp:
1077         (JSC::JSObject::mark):
1078         (JSC::JSObject::put):
1079         (JSC::JSObject::putWithAttributes):
1080         (JSC::callDefaultValueFunction):
1081         (JSC::JSObject::getPrimitiveNumber):
1082         (JSC::JSObject::defaultValue):
1083         (JSC::JSObject::defineGetter):
1084         (JSC::JSObject::defineSetter):
1085         (JSC::JSObject::lookupGetter):
1086         (JSC::JSObject::lookupSetter):
1087         (JSC::JSObject::hasInstance):
1088         (JSC::JSObject::toNumber):
1089         (JSC::JSObject::toString):
1090         (JSC::JSObject::fillGetterPropertySlot):
1091         * runtime/JSObject.h:
1092         (JSC::JSObject::getDirect):
1093         (JSC::JSObject::getDirectLocation):
1094         (JSC::JSObject::offsetForLocation):
1095         (JSC::JSObject::locationForOffset):
1096         (JSC::JSObject::getDirectOffset):
1097         (JSC::JSObject::putDirectOffset):
1098         (JSC::JSObject::createStructure):
1099         (JSC::asObject):
1100         (JSC::JSObject::prototype):
1101         (JSC::JSObject::setPrototype):
1102         (JSC::JSValue::isObject):
1103         (JSC::JSObject::inlineGetOwnPropertySlot):
1104         (JSC::JSObject::getOwnPropertySlotForWrite):
1105         (JSC::JSObject::getPropertySlot):
1106         (JSC::JSObject::get):
1107         (JSC::JSObject::putDirect):
1108         (JSC::JSObject::putDirectWithoutTransition):
1109         (JSC::JSObject::toPrimitive):
1110         (JSC::JSValue::get):
1111         (JSC::JSValue::put):
1112         (JSC::JSObject::allocatePropertyStorageInline):
1113         * runtime/JSPropertyNameIterator.cpp:
1114         (JSC::JSPropertyNameIterator::toPrimitive):
1115         (JSC::JSPropertyNameIterator::getPrimitiveNumber):
1116         * runtime/JSPropertyNameIterator.h:
1117         (JSC::JSPropertyNameIterator::create):
1118         (JSC::JSPropertyNameIterator::next):
1119         * runtime/JSStaticScopeObject.cpp:
1120         (JSC::JSStaticScopeObject::put):
1121         (JSC::JSStaticScopeObject::putWithAttributes):
1122         * runtime/JSStaticScopeObject.h:
1123         (JSC::JSStaticScopeObject::JSStaticScopeObject):
1124         (JSC::JSStaticScopeObject::createStructure):
1125         * runtime/JSString.cpp:
1126         (JSC::JSString::toPrimitive):
1127         (JSC::JSString::getPrimitiveNumber):
1128         (JSC::JSString::getOwnPropertySlot):
1129         * runtime/JSString.h:
1130         (JSC::JSString::createStructure):
1131         (JSC::asString):
1132         (JSC::isJSString):
1133         (JSC::JSValue::toThisJSString):
1134         * runtime/JSValue.cpp:
1135         (JSC::JSValue::toInteger):
1136         (JSC::JSValue::toIntegerPreserveNaN):
1137         * runtime/JSValue.h:
1138         (JSC::JSValue::makeImmediate):
1139         (JSC::JSValue::asValue):
1140         (JSC::noValue):
1141         (JSC::jsImpossibleValue):
1142         (JSC::jsNull):
1143         (JSC::jsUndefined):
1144         (JSC::jsBoolean):
1145         (JSC::operator==):
1146         (JSC::operator!=):
1147         (JSC::JSValue::encode):
1148         (JSC::JSValue::decode):
1149         (JSC::JSValue::JSValue):
1150         (JSC::JSValue::operator bool):
1151         (JSC::JSValue::operator==):
1152         (JSC::JSValue::operator!=):
1153         (JSC::JSValue::isUndefined):
1154         (JSC::JSValue::isNull):
1155         * runtime/JSVariableObject.h:
1156         (JSC::JSVariableObject::symbolTablePut):
1157         (JSC::JSVariableObject::symbolTablePutWithAttributes):
1158         * runtime/JSWrapperObject.h:
1159         (JSC::JSWrapperObject::internalValue):
1160         (JSC::JSWrapperObject::setInternalValue):
1161         * runtime/Lookup.cpp:
1162         (JSC::setUpStaticFunctionSlot):
1163         * runtime/Lookup.h:
1164         (JSC::lookupPut):
1165         * runtime/MathObject.cpp:
1166         (JSC::mathProtoFuncAbs):
1167         (JSC::mathProtoFuncACos):
1168         (JSC::mathProtoFuncASin):
1169         (JSC::mathProtoFuncATan):
1170         (JSC::mathProtoFuncATan2):
1171         (JSC::mathProtoFuncCeil):
1172         (JSC::mathProtoFuncCos):
1173         (JSC::mathProtoFuncExp):
1174         (JSC::mathProtoFuncFloor):
1175         (JSC::mathProtoFuncLog):
1176         (JSC::mathProtoFuncMax):
1177         (JSC::mathProtoFuncMin):
1178         (JSC::mathProtoFuncPow):
1179         (JSC::mathProtoFuncRandom):
1180         (JSC::mathProtoFuncRound):
1181         (JSC::mathProtoFuncSin):
1182         (JSC::mathProtoFuncSqrt):
1183         (JSC::mathProtoFuncTan):
1184         * runtime/MathObject.h:
1185         (JSC::MathObject::createStructure):
1186         * runtime/NativeErrorConstructor.cpp:
1187         (JSC::callNativeErrorConstructor):
1188         * runtime/NumberConstructor.cpp:
1189         (JSC::numberConstructorNaNValue):
1190         (JSC::numberConstructorNegInfinity):
1191         (JSC::numberConstructorPosInfinity):
1192         (JSC::numberConstructorMaxValue):
1193         (JSC::numberConstructorMinValue):
1194         (JSC::callNumberConstructor):
1195         * runtime/NumberConstructor.h:
1196         (JSC::NumberConstructor::createStructure):
1197         * runtime/NumberObject.cpp:
1198         (JSC::NumberObject::getJSNumber):
1199         (JSC::constructNumber):
1200         * runtime/NumberObject.h:
1201         * runtime/NumberPrototype.cpp:
1202         (JSC::numberProtoFuncToString):
1203         (JSC::numberProtoFuncToLocaleString):
1204         (JSC::numberProtoFuncValueOf):
1205         (JSC::numberProtoFuncToFixed):
1206         (JSC::numberProtoFuncToExponential):
1207         (JSC::numberProtoFuncToPrecision):
1208         * runtime/ObjectConstructor.cpp:
1209         (JSC::constructObject):
1210         (JSC::callObjectConstructor):
1211         * runtime/ObjectPrototype.cpp:
1212         (JSC::objectProtoFuncValueOf):
1213         (JSC::objectProtoFuncHasOwnProperty):
1214         (JSC::objectProtoFuncIsPrototypeOf):
1215         (JSC::objectProtoFuncDefineGetter):
1216         (JSC::objectProtoFuncDefineSetter):
1217         (JSC::objectProtoFuncLookupGetter):
1218         (JSC::objectProtoFuncLookupSetter):
1219         (JSC::objectProtoFuncPropertyIsEnumerable):
1220         (JSC::objectProtoFuncToLocaleString):
1221         (JSC::objectProtoFuncToString):
1222         * runtime/ObjectPrototype.h:
1223         * runtime/Operations.cpp:
1224         (JSC::JSValue::equalSlowCase):
1225         (JSC::JSValue::strictEqualSlowCase):
1226         (JSC::throwOutOfMemoryError):
1227         (JSC::jsAddSlowCase):
1228         (JSC::jsTypeStringForValue):
1229         (JSC::jsIsObjectType):
1230         (JSC::jsIsFunctionType):
1231         * runtime/Operations.h:
1232         (JSC::JSValue::equal):
1233         (JSC::JSValue::equalSlowCaseInline):
1234         (JSC::JSValue::strictEqual):
1235         (JSC::JSValue::strictEqualSlowCaseInline):
1236         (JSC::jsLess):
1237         (JSC::jsLessEq):
1238         (JSC::jsAdd):
1239         (JSC::countPrototypeChainEntriesAndCheckForProxies):
1240         (JSC::resolveBase):
1241         * runtime/PropertySlot.cpp:
1242         (JSC::PropertySlot::functionGetter):
1243         * runtime/PropertySlot.h:
1244         (JSC::PropertySlot::PropertySlot):
1245         (JSC::PropertySlot::getValue):
1246         (JSC::PropertySlot::putValue):
1247         (JSC::PropertySlot::setValueSlot):
1248         (JSC::PropertySlot::setValue):
1249         (JSC::PropertySlot::setCustom):
1250         (JSC::PropertySlot::setCustomIndex):
1251         (JSC::PropertySlot::slotBase):
1252         (JSC::PropertySlot::setBase):
1253         (JSC::PropertySlot::):
1254         * runtime/Protect.h:
1255         (JSC::gcProtect):
1256         (JSC::gcUnprotect):
1257         (JSC::ProtectedPtr::operator JSValue):
1258         (JSC::ProtectedJSValue::ProtectedJSValue):
1259         (JSC::ProtectedJSValue::get):
1260         (JSC::ProtectedJSValue::operator JSValue):
1261         (JSC::ProtectedJSValue::operator->):
1262         (JSC::ProtectedJSValue::~ProtectedJSValue):
1263         (JSC::ProtectedJSValue::operator=):
1264         (JSC::operator==):
1265         (JSC::operator!=):
1266         * runtime/RegExpConstructor.cpp:
1267         (JSC::RegExpConstructor::getBackref):
1268         (JSC::RegExpConstructor::getLastParen):
1269         (JSC::RegExpConstructor::getLeftContext):
1270         (JSC::RegExpConstructor::getRightContext):
1271         (JSC::regExpConstructorDollar1):
1272         (JSC::regExpConstructorDollar2):
1273         (JSC::regExpConstructorDollar3):
1274         (JSC::regExpConstructorDollar4):
1275         (JSC::regExpConstructorDollar5):
1276         (JSC::regExpConstructorDollar6):
1277         (JSC::regExpConstructorDollar7):
1278         (JSC::regExpConstructorDollar8):
1279         (JSC::regExpConstructorDollar9):
1280         (JSC::regExpConstructorInput):
1281         (JSC::regExpConstructorMultiline):
1282         (JSC::regExpConstructorLastMatch):
1283         (JSC::regExpConstructorLastParen):
1284         (JSC::regExpConstructorLeftContext):
1285         (JSC::regExpConstructorRightContext):
1286         (JSC::RegExpConstructor::put):
1287         (JSC::setRegExpConstructorInput):
1288         (JSC::setRegExpConstructorMultiline):
1289         (JSC::constructRegExp):
1290         (JSC::callRegExpConstructor):
1291         * runtime/RegExpConstructor.h:
1292         (JSC::RegExpConstructor::createStructure):
1293         (JSC::asRegExpConstructor):
1294         * runtime/RegExpMatchesArray.h:
1295         (JSC::RegExpMatchesArray::put):
1296         * runtime/RegExpObject.cpp:
1297         (JSC::regExpObjectGlobal):
1298         (JSC::regExpObjectIgnoreCase):
1299         (JSC::regExpObjectMultiline):
1300         (JSC::regExpObjectSource):
1301         (JSC::regExpObjectLastIndex):
1302         (JSC::RegExpObject::put):
1303         (JSC::setRegExpObjectLastIndex):
1304         (JSC::RegExpObject::test):
1305         (JSC::RegExpObject::exec):
1306         (JSC::callRegExpObject):
1307         * runtime/RegExpObject.h:
1308         (JSC::RegExpObject::createStructure):
1309         (JSC::asRegExpObject):
1310         * runtime/RegExpPrototype.cpp:
1311         (JSC::regExpProtoFuncTest):
1312         (JSC::regExpProtoFuncExec):
1313         (JSC::regExpProtoFuncCompile):
1314         (JSC::regExpProtoFuncToString):
1315         * runtime/StringConstructor.cpp:
1316         (JSC::stringFromCharCodeSlowCase):
1317         (JSC::stringFromCharCode):
1318         (JSC::callStringConstructor):
1319         * runtime/StringObject.cpp:
1320         (JSC::StringObject::put):
1321         * runtime/StringObject.h:
1322         (JSC::StringObject::createStructure):
1323         (JSC::asStringObject):
1324         * runtime/StringObjectThatMasqueradesAsUndefined.h:
1325         (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
1326         * runtime/StringPrototype.cpp:
1327         (JSC::stringProtoFuncReplace):
1328         (JSC::stringProtoFuncToString):
1329         (JSC::stringProtoFuncCharAt):
1330         (JSC::stringProtoFuncCharCodeAt):
1331         (JSC::stringProtoFuncConcat):
1332         (JSC::stringProtoFuncIndexOf):
1333         (JSC::stringProtoFuncLastIndexOf):
1334         (JSC::stringProtoFuncMatch):
1335         (JSC::stringProtoFuncSearch):
1336         (JSC::stringProtoFuncSlice):
1337         (JSC::stringProtoFuncSplit):
1338         (JSC::stringProtoFuncSubstr):
1339         (JSC::stringProtoFuncSubstring):
1340         (JSC::stringProtoFuncToLowerCase):
1341         (JSC::stringProtoFuncToUpperCase):
1342         (JSC::stringProtoFuncLocaleCompare):
1343         (JSC::stringProtoFuncBig):
1344         (JSC::stringProtoFuncSmall):
1345         (JSC::stringProtoFuncBlink):
1346         (JSC::stringProtoFuncBold):
1347         (JSC::stringProtoFuncFixed):
1348         (JSC::stringProtoFuncItalics):
1349         (JSC::stringProtoFuncStrike):
1350         (JSC::stringProtoFuncSub):
1351         (JSC::stringProtoFuncSup):
1352         (JSC::stringProtoFuncFontcolor):
1353         (JSC::stringProtoFuncFontsize):
1354         (JSC::stringProtoFuncAnchor):
1355         (JSC::stringProtoFuncLink):
1356         * runtime/Structure.cpp:
1357         (JSC::Structure::Structure):
1358         (JSC::Structure::changePrototypeTransition):
1359         * runtime/Structure.h:
1360         (JSC::Structure::create):
1361         (JSC::Structure::setPrototypeWithoutTransition):
1362         (JSC::Structure::storedPrototype):
1363
1364 2009-05-01  Geoffrey Garen  <ggaren@apple.com>
1365
1366         Reviewed by Sam "That doesn't look like what I thought it looks like" Weinig.
1367         
1368         Beefed up the JSValuePtr class and removed some non-JSValuePtr dependencies
1369         on JSImmediate, in prepapration for making JSImmediate an implementation
1370         detail of JSValuePtr.
1371         
1372         SunSpider reports no change.
1373
1374         * interpreter/Interpreter.cpp:
1375         (JSC::Interpreter::privateExecute):
1376         * jit/JIT.cpp:
1377         (JSC::JIT::privateCompileMainPass):
1378         * jit/JITArithmetic.cpp:
1379         (JSC::JIT::compileFastArith_op_mod):
1380         * runtime/JSGlobalObjectFunctions.cpp:
1381         (JSC::globalFuncParseInt): Updated for interface changes.
1382
1383         * runtime/JSImmediate.h:
1384         (JSC::JSValuePtr::JSValuePtr):
1385         * runtime/JSValue.h:
1386         (JSC::JSValuePtr::):
1387         (JSC::jsImpossibleValue):
1388         (JSC::jsNull):
1389         (JSC::jsUndefined):
1390         (JSC::jsBoolean):
1391         (JSC::JSValuePtr::encode):
1392         (JSC::JSValuePtr::decode):
1393         (JSC::JSValuePtr::JSValuePtr):
1394         (JSC::JSValuePtr::operator bool):
1395         (JSC::JSValuePtr::operator==):
1396         (JSC::JSValuePtr::operator!=):
1397         (JSC::JSValuePtr::isUndefined):
1398         (JSC::JSValuePtr::isNull): Changed jsImpossibleValue(), jsNull(),
1399         jsUndefined(), and jsBoolean() to operate in terms of JSValuePtr instead
1400         of JSImmediate.
1401
1402         * wtf/StdLibExtras.h:
1403         (WTF::bitwise_cast): Fixed up for clarity.
1404
1405 2009-04-30  Gavin Barraclough  <barraclough@apple.com>
1406
1407         Reviewed by Geoff Garen.
1408
1409         Bug fix for rdar:/68455379.  If a case-insensitive regex contains
1410         a character class containing a range with an upper bound of \uFFFF
1411         the parser will infinite-loop whist adding other-case characters
1412         for characters in the range that do have another case.
1413
1414         * yarr/RegexCompiler.cpp:
1415         (JSC::Yarr::CharacterClassConstructor::putRange):
1416
1417 2009-04-30  Gavin Barraclough  <barraclough@apple.com>
1418
1419         Reviewed by Oliver Hunt.
1420
1421         OPCODE_SAMPLING without CODEBLOCK_SAMPLING is currently broken,
1422         since SamplingTool::Sample::isNull() checks the m_codeBlock
1423         member (which is always null without CODEBLOCK_SAMPLING).
1424
1425         Restructure the checks so make this work again.
1426
1427         * bytecode/SamplingTool.cpp:
1428         (JSC::SamplingTool::doRun):
1429         * bytecode/SamplingTool.h:
1430         (JSC::SamplingTool::Sample::isNull):
1431
1432 2009-04-30  Maciej Stachowiak  <mjs@apple.com>
1433
1434         Reviewed by Gavin Barraclough.
1435
1436         - Concatenate final three strings in simple replace case at one go
1437
1438         ~0.2% SunSpider speedup
1439
1440         * runtime/StringPrototype.cpp:
1441         (JSC::stringProtoFuncReplace): Use new replaceRange helper instead of
1442         taking substrings and concatenating three strings.
1443         * runtime/UString.cpp:
1444         (JSC::UString::replaceRange): New helper function.
1445         * runtime/UString.h:
1446
1447 2009-04-30  Geoffrey Garen  <ggaren@apple.com>
1448
1449         Rubber Stamped by Gavin Barraclough.
1450         
1451         Changed JSValueEncodedAsPtr* => EncodedJSValuePtr to support a non-pointer
1452         encoding for JSValuePtrs.
1453
1454         * API/APICast.h:
1455         (toJS):
1456         * bytecompiler/BytecodeGenerator.h:
1457         (JSC::BytecodeGenerator::JSValueHashTraits::constructDeletedValue):
1458         (JSC::BytecodeGenerator::JSValueHashTraits::isDeletedValue):
1459         * interpreter/Register.h:
1460         (JSC::Register::):
1461         * jit/JIT.cpp:
1462         (JSC::):
1463         * jit/JIT.h:
1464         * jit/JITCode.h:
1465         (JSC::):
1466         * jit/JITStubs.cpp:
1467         (JSC::JITStubs::cti_op_add):
1468         (JSC::JITStubs::cti_op_pre_inc):
1469         (JSC::JITStubs::cti_op_get_by_id_generic):
1470         (JSC::JITStubs::cti_op_get_by_id):
1471         (JSC::JITStubs::cti_op_get_by_id_second):
1472         (JSC::JITStubs::cti_op_get_by_id_self_fail):
1473         (JSC::JITStubs::cti_op_get_by_id_proto_list):
1474         (JSC::JITStubs::cti_op_get_by_id_proto_list_full):
1475         (JSC::JITStubs::cti_op_get_by_id_proto_fail):
1476         (JSC::JITStubs::cti_op_get_by_id_array_fail):
1477         (JSC::JITStubs::cti_op_get_by_id_string_fail):
1478         (JSC::JITStubs::cti_op_instanceof):
1479         (JSC::JITStubs::cti_op_del_by_id):
1480         (JSC::JITStubs::cti_op_mul):
1481         (JSC::JITStubs::cti_op_call_NotJSFunction):
1482         (JSC::JITStubs::cti_op_resolve):
1483         (JSC::JITStubs::cti_op_construct_NotJSConstruct):
1484         (JSC::JITStubs::cti_op_get_by_val):
1485         (JSC::JITStubs::cti_op_get_by_val_string):
1486         (JSC::JITStubs::cti_op_get_by_val_byte_array):
1487         (JSC::JITStubs::cti_op_sub):
1488         (JSC::JITStubs::cti_op_lesseq):
1489         (JSC::JITStubs::cti_op_negate):
1490         (JSC::JITStubs::cti_op_resolve_base):
1491         (JSC::JITStubs::cti_op_resolve_skip):
1492         (JSC::JITStubs::cti_op_resolve_global):
1493         (JSC::JITStubs::cti_op_div):
1494         (JSC::JITStubs::cti_op_pre_dec):
1495         (JSC::JITStubs::cti_op_not):
1496         (JSC::JITStubs::cti_op_eq):
1497         (JSC::JITStubs::cti_op_lshift):
1498         (JSC::JITStubs::cti_op_bitand):
1499         (JSC::JITStubs::cti_op_rshift):
1500         (JSC::JITStubs::cti_op_bitnot):
1501         (JSC::JITStubs::cti_op_mod):
1502         (JSC::JITStubs::cti_op_less):
1503         (JSC::JITStubs::cti_op_neq):
1504         (JSC::JITStubs::cti_op_urshift):
1505         (JSC::JITStubs::cti_op_bitxor):
1506         (JSC::JITStubs::cti_op_bitor):
1507         (JSC::JITStubs::cti_op_call_eval):
1508         (JSC::JITStubs::cti_op_throw):
1509         (JSC::JITStubs::cti_op_next_pname):
1510         (JSC::JITStubs::cti_op_typeof):
1511         (JSC::JITStubs::cti_op_is_undefined):
1512         (JSC::JITStubs::cti_op_is_boolean):
1513         (JSC::JITStubs::cti_op_is_number):
1514         (JSC::JITStubs::cti_op_is_string):
1515         (JSC::JITStubs::cti_op_is_object):
1516         (JSC::JITStubs::cti_op_is_function):
1517         (JSC::JITStubs::cti_op_stricteq):
1518         (JSC::JITStubs::cti_op_nstricteq):
1519         (JSC::JITStubs::cti_op_to_jsnumber):
1520         (JSC::JITStubs::cti_op_in):
1521         (JSC::JITStubs::cti_op_del_by_val):
1522         (JSC::JITStubs::cti_vm_throw):
1523         * jit/JITStubs.h:
1524         * runtime/JSValue.h:
1525         (JSC::JSValuePtr::encode):
1526         (JSC::JSValuePtr::decode):
1527
1528 2009-04-30  Gavin Barraclough  <barraclough@apple.com>
1529
1530         Reviewed by Oliver "Abandon Ship!" Hunt.
1531
1532         Fix a leak in Yarr.
1533
1534         All Disjunctions should be recorded in RegexPattern::m_disjunctions,
1535         so that they can be freed at the end of compilation - copyDisjunction
1536         is failing to do so.
1537
1538         * yarr/RegexCompiler.cpp:
1539         (JSC::Yarr::RegexPatternConstructor::copyDisjunction):
1540
1541 2009-04-30  Oliver Hunt  <oliver@apple.com>
1542
1543         Reviewed by Gavin Barraclough.
1544
1545         Add function to CallFrame for dumping the current JS caller
1546
1547         Added debug only method CallFrame::dumpCaller() that provide the call location
1548         of the deepest currently executing JS function.
1549
1550         * interpreter/CallFrame.cpp:
1551         (JSC::CallFrame::dumpCaller):
1552         * interpreter/CallFrame.h:
1553
1554 2009-04-30  Maciej Stachowiak  <mjs@apple.com>
1555
1556         Reviewed by Geoff Garen.
1557
1558         - make BaseStrings have themselves as a base, instead of nothing, to remove common branches
1559
1560         ~0.7% SunSpider speedup
1561
1562         * runtime/UString.h:
1563         (JSC::UString::Rep::Rep): For the constructor without a base, set self as base instead of null.
1564         (JSC::UString::Rep::baseString): Just read m_baseString - no more branching.
1565
1566 2009-04-30  Gavin Barraclough  <barraclough@apple.com>
1567
1568         Reviewed by Oliver Hunt.
1569
1570         Two quick improvements to SamplingFlags mechanism.
1571
1572         SamplingFlags::ScopedFlag class to provide support for automagically
1573         clearing a flag as it goes out of scope, and add a little more detail
1574         to the output generated by the tool.
1575
1576         * bytecode/SamplingTool.cpp:
1577         (JSC::SamplingFlags::stop):
1578         * bytecode/SamplingTool.h:
1579         (JSC::SamplingFlags::ScopedFlag::ScopedFlag):
1580         (JSC::SamplingFlags::ScopedFlag::~ScopedFlag):
1581
1582 2009-04-30  Adam Roben  <aroben@apple.com>
1583
1584         Restore build event steps that were truncated in r43082
1585
1586         Rubber-stamped by Steve Falkenburg.
1587
1588         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
1589         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
1590         * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
1591         Re-copied the command lines for the build events from the pre-r43082
1592         .vcproj files.
1593
1594         * JavaScriptCore.vcproj/jsc/jsc.vcproj: Removed an unnecessary
1595         attribute.
1596
1597 2009-04-30  Adam Roben  <aroben@apple.com>
1598
1599         Move settings from .vcproj files to .vsprops files within the
1600         JavaScriptCore directory
1601
1602         Moving the settings to a .vsprops file means that we will only have to
1603         change a single setting to affect all configurations, instead of one
1604         setting per configuration.
1605
1606         Reviewed by Steve Falkenburg.
1607
1608         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
1609         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
1610         * JavaScriptCore.vcproj/jsc/jsc.vcproj:
1611         * JavaScriptCore.vcproj/testapi/testapi.vcproj:
1612         Moved settings from these files to the new .vsprops files. Note that
1613         testapi.vcproj had a lot of overrides of default settings that were
1614         the same as the defaults, which I've removed.
1615
1616         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: Added.
1617         * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: Added.
1618         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Added.
1619         * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: Added.
1620
1621 2009-04-30  Dimitri Glazkov  <dglazkov@chromium.org>
1622
1623         Reviewed by Timothy Hatcher.
1624
1625         https://bugs.webkit.org/show_bug.cgi?id=25470
1626         Extend the cover of ENABLE_JAVASCRIPT_DEBUGGER to profiler.
1627
1628         * Configurations/FeatureDefines.xcconfig: Added ENABLE_JAVASCRIPT_DEBUGGER define.
1629
1630 2009-04-30  Maciej Stachowiak  <mjs@apple.com>
1631
1632         Reviewed by Alexey Proskuryakov.
1633
1634         - speed up string concatenation by reorganizing some simple cases
1635
1636         0.7% SunSpider speedup
1637
1638         * runtime/UString.cpp:
1639         (JSC::concatenate): Put fast case for appending a single character
1640         before the empty string special cases; streamline code a bit to
1641         delay computing values that are not needed in the fast path.
1642
1643 2009-04-30  Gavin Barraclough  <barraclough@apple.com>
1644
1645         Reviewed by Maciej Stachowiak.
1646
1647         Add SamplingFlags mechanism.
1648
1649         This mechanism allows fine-grained JSC and JavaScript program aware
1650         performance measurement.  The mechanism provides a set of 32 flags,
1651         numbered #1..#32.  Flag #16 is initially set, and all other flags
1652         are cleared.  Flags may be set and cleared from within
1653
1654         Enable by setting ENABLE_SAMPLING_FLAGS to 1 in wtf/Platform.h.
1655         Disabled by default, no performance impact.  Flags may be modified
1656         by calling SamplingFlags::setFlag() and SamplingFlags::clearFlag()
1657         from within JSC implementation, or by calling setSamplingFlag() and
1658         clearSamplingFlag() from JavaScript.
1659
1660         The flags are sampled with a frequency of 10000Hz, and the highest
1661         set flag in recorded, allowing multiple events to be measured (with
1662         the highest flag number representing the highest priority).
1663
1664         Disabled by default; no performance impact.
1665
1666         * JavaScriptCore.exp:
1667         * bytecode/SamplingTool.cpp:
1668         (JSC::SamplingFlags::sample):
1669         (JSC::SamplingFlags::start):
1670         (JSC::SamplingFlags::stop):
1671         (JSC::SamplingThread::threadStartFunc):
1672         (JSC::SamplingThread::start):
1673         (JSC::SamplingThread::stop):
1674         (JSC::ScopeSampleRecord::sample):
1675         (JSC::SamplingTool::doRun):
1676         (JSC::SamplingTool::sample):
1677         (JSC::SamplingTool::start):
1678         (JSC::SamplingTool::stop):
1679         * bytecode/SamplingTool.h:
1680         (JSC::SamplingFlags::setFlag):
1681         (JSC::SamplingFlags::clearFlag):
1682         (JSC::SamplingTool::SamplingTool):
1683         * jsc.cpp:
1684         (GlobalObject::GlobalObject):
1685         (functionSetSamplingFlag):
1686         (functionClearSamplingFlag):
1687         (runWithScripts):
1688         * wtf/Platform.h:
1689
1690 2009-04-29  Sam Weinig  <sam@webkit.org>
1691
1692         Another attempt to fix the windows build.
1693
1694         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1695         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
1696
1697 2009-04-29  Sam Weinig  <sam@webkit.org>
1698
1699         Try and fix the windows build.
1700
1701         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1702         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
1703
1704 2009-04-29  Gavin Barraclough  <barraclough@apple.com>
1705
1706         Reviewed by Oliver "Peg-Leg" Hunt.
1707
1708         Coallesce input checking and reduce futzing with the index position
1709         between alternatives and iterations of the main loop of a regex,
1710         when run in YARR.
1711
1712         Consider the following regex:  /foo|bar/
1713         
1714         Prior to this patch, this will be implemented something like this pseudo-code description:
1715         
1716         loop:
1717             check_for_available_input(3) // this increments the index by 3, for the first alterantive.
1718                 if (available) { test "foo" }
1719             decrement_index(3)
1720             check_for_available_input(3) // this increments the index by 3, for the second alterantive.
1721                 if (available) { test "bar" }
1722             decrement_index(3)
1723             check_for_available_input(1) // can we loop again?
1724                 if (available) { goto loop }
1725
1726         With these changes it will look more like this:
1727
1728             check_for_available_input(3) // this increments the index by 3, for the first alterantive.
1729             if (!available) { goto fail }
1730         loop:
1731             test "foo"
1732             test "bar"
1733             check_for_available_input(1) // can we loop again?
1734                 if (available) { goto loop }
1735         fail:
1736
1737
1738         This gives about a 5% gain on v8-regex, no change on Sunspider.
1739
1740         * yarr/RegexJIT.cpp:
1741         (JSC::Yarr::RegexGenerator::TermGenerationState::linkAlternativeBacktracksTo):
1742         (JSC::Yarr::RegexGenerator::generateDisjunction):
1743
1744 2009-04-29  Oliver Hunt  <oliver@apple.com>
1745
1746         Reviewed by Gavin Barraclough.
1747
1748         Clean up ArgList to be a trivial type
1749
1750         Separate out old ArgList logic to handle buffering and marking arguments
1751         into a distinct MarkedArgumentBuffer type.  ArgList becomes a trivial
1752         struct of a pointer and length.
1753
1754         * API/JSObjectRef.cpp:
1755         (JSObjectMakeFunction):
1756         (JSObjectMakeArray):
1757         (JSObjectMakeDate):
1758         (JSObjectMakeError):
1759         (JSObjectMakeRegExp):
1760         (JSObjectCallAsFunction):
1761         (JSObjectCallAsConstructor):
1762         * JavaScriptCore.exp:
1763         * interpreter/CallFrame.h:
1764         (JSC::ExecState::emptyList):
1765         * runtime/ArgList.cpp:
1766         (JSC::ArgList::getSlice):
1767         (JSC::MarkedArgumentBuffer::markLists):
1768         (JSC::MarkedArgumentBuffer::slowAppend):
1769         * runtime/ArgList.h:
1770         (JSC::MarkedArgumentBuffer::MarkedArgumentBuffer):
1771         (JSC::MarkedArgumentBuffer::~MarkedArgumentBuffer):
1772         (JSC::ArgList::ArgList):
1773         (JSC::ArgList::at):
1774         (JSC::ArgList::isEmpty):
1775         (JSC::ArgList::size):
1776         (JSC::ArgList::begin):
1777         (JSC::ArgList::end):
1778         * runtime/Arguments.cpp:
1779         (JSC::Arguments::fillArgList):
1780         * runtime/Arguments.h:
1781         * runtime/ArrayPrototype.cpp:
1782         (JSC::arrayProtoFuncConcat):
1783         (JSC::arrayProtoFuncPush):
1784         (JSC::arrayProtoFuncSort):
1785         (JSC::arrayProtoFuncFilter):
1786         (JSC::arrayProtoFuncMap):
1787         (JSC::arrayProtoFuncEvery):
1788         (JSC::arrayProtoFuncForEach):
1789         (JSC::arrayProtoFuncSome):
1790         (JSC::arrayProtoFuncReduce):
1791         (JSC::arrayProtoFuncReduceRight):
1792         * runtime/Collector.cpp:
1793         (JSC::Heap::collect):
1794         * runtime/Collector.h:
1795         (JSC::Heap::markListSet):
1796         * runtime/CommonIdentifiers.h:
1797         * runtime/Error.cpp:
1798         (JSC::Error::create):
1799         * runtime/FunctionPrototype.cpp:
1800         (JSC::functionProtoFuncApply):
1801         * runtime/JSArray.cpp:
1802         (JSC::JSArray::JSArray):
1803         (JSC::AVLTreeAbstractorForArrayCompare::compare_key_key):
1804         (JSC::JSArray::fillArgList):
1805         (JSC::constructArray):
1806         * runtime/JSArray.h:
1807         * runtime/JSGlobalData.cpp:
1808         (JSC::JSGlobalData::JSGlobalData):
1809         * runtime/JSGlobalData.h:
1810         * runtime/JSObject.cpp:
1811         (JSC::JSObject::put):
1812         * runtime/StringConstructor.cpp:
1813         (JSC::stringFromCharCodeSlowCase):
1814         * runtime/StringPrototype.cpp:
1815         (JSC::stringProtoFuncReplace):
1816         (JSC::stringProtoFuncConcat):
1817         (JSC::stringProtoFuncMatch):
1818
1819 2009-04-29  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
1820
1821         Reviewed by Sam Weinig.
1822
1823         https://bugs.webkit.org/show_bug.cgi?id=25334
1824
1825         Fix Qt build when ENABLE_JIT is explicitly set to 1
1826         to overrule defaults.
1827
1828         * JavaScriptCore.pri:
1829
1830 2009-04-29  Oliver Hunt  <oliver@apple.com>
1831
1832         Reviewed by Steve Falkenburg.
1833
1834         Crash in profiler due to incorrect assuming displayName would be a string.
1835
1836         Fixed by adding a type guard.
1837
1838         * runtime/InternalFunction.cpp:
1839         (JSC::InternalFunction::displayName):
1840
1841 2009-04-28  Geoffrey Garen  <ggaren@apple.com>
1842
1843         Rubber stamped by Beth Dakin.
1844         
1845         Removed scaffolding supporting dynamically converting between 32bit and
1846         64bit value representations. 
1847
1848         * API/JSCallbackConstructor.cpp:
1849         (JSC::constructJSCallback):
1850         * API/JSCallbackFunction.cpp:
1851         (JSC::JSCallbackFunction::call):
1852         * API/JSCallbackObjectFunctions.h:
1853         (JSC::::construct):
1854         (JSC::::call):
1855         * bytecode/CodeBlock.cpp:
1856         (JSC::CodeBlock::dump):
1857         * bytecode/CodeBlock.h:
1858         (JSC::CodeBlock::getConstant):
1859         * bytecompiler/BytecodeGenerator.cpp:
1860         (JSC::BytecodeGenerator::emitEqualityOp):
1861         * interpreter/CallFrame.cpp:
1862         (JSC::CallFrame::thisValue):
1863         * interpreter/Interpreter.cpp:
1864         (JSC::Interpreter::callEval):
1865         (JSC::Interpreter::throwException):
1866         (JSC::Interpreter::createExceptionScope):
1867         (JSC::Interpreter::privateExecute):
1868         (JSC::Interpreter::retrieveArguments):
1869         * interpreter/Register.h:
1870         (JSC::Register::):
1871         (JSC::Register::Register):
1872         (JSC::Register::jsValue):
1873         (JSC::Register::marked):
1874         (JSC::Register::mark):
1875         (JSC::Register::i):
1876         (JSC::Register::activation):
1877         (JSC::Register::arguments):
1878         (JSC::Register::callFrame):
1879         (JSC::Register::codeBlock):
1880         (JSC::Register::function):
1881         (JSC::Register::propertyNameIterator):
1882         (JSC::Register::scopeChain):
1883         (JSC::Register::vPC):
1884         * jit/JITStubs.cpp:
1885         (JSC::JITStubs::cti_op_call_NotJSFunction):
1886         (JSC::JITStubs::cti_op_load_varargs):
1887         (JSC::JITStubs::cti_op_call_eval):
1888         * jsc.cpp:
1889         (functionPrint):
1890         (functionDebug):
1891         (functionRun):
1892         (functionLoad):
1893         * runtime/ArgList.h:
1894         (JSC::ArgList::at):
1895         * runtime/Arguments.cpp:
1896         (JSC::Arguments::copyToRegisters):
1897         (JSC::Arguments::fillArgList):
1898         (JSC::Arguments::getOwnPropertySlot):
1899         * runtime/ArrayConstructor.cpp:
1900         (JSC::constructArrayWithSizeQuirk):
1901         * runtime/ArrayPrototype.cpp:
1902         (JSC::arrayProtoFuncJoin):
1903         (JSC::arrayProtoFuncConcat):
1904         (JSC::arrayProtoFuncPush):
1905         (JSC::arrayProtoFuncSlice):
1906         (JSC::arrayProtoFuncSort):
1907         (JSC::arrayProtoFuncSplice):
1908         (JSC::arrayProtoFuncUnShift):
1909         (JSC::arrayProtoFuncFilter):
1910         (JSC::arrayProtoFuncMap):
1911         (JSC::arrayProtoFuncEvery):
1912         (JSC::arrayProtoFuncForEach):
1913         (JSC::arrayProtoFuncSome):
1914         (JSC::arrayProtoFuncReduce):
1915         (JSC::arrayProtoFuncReduceRight):
1916         (JSC::arrayProtoFuncIndexOf):
1917         (JSC::arrayProtoFuncLastIndexOf):
1918         * runtime/BooleanConstructor.cpp:
1919         (JSC::constructBoolean):
1920         (JSC::callBooleanConstructor):
1921         * runtime/DateConstructor.cpp:
1922         (JSC::constructDate):
1923         (JSC::dateParse):
1924         (JSC::dateUTC):
1925         * runtime/DatePrototype.cpp:
1926         (JSC::formatLocaleDate):
1927         (JSC::fillStructuresUsingTimeArgs):
1928         (JSC::fillStructuresUsingDateArgs):
1929         (JSC::dateProtoFuncSetTime):
1930         (JSC::dateProtoFuncSetYear):
1931         * runtime/ErrorConstructor.cpp:
1932         (JSC::constructError):
1933         * runtime/FunctionConstructor.cpp:
1934         (JSC::constructFunction):
1935         * runtime/FunctionPrototype.cpp:
1936         (JSC::functionProtoFuncApply):
1937         (JSC::functionProtoFuncCall):
1938         * runtime/JSArray.cpp:
1939         (JSC::JSArray::JSArray):
1940         (JSC::constructArray):
1941         * runtime/JSArray.h:
1942         * runtime/JSGlobalObjectFunctions.cpp:
1943         (JSC::encode):
1944         (JSC::decode):
1945         (JSC::globalFuncEval):
1946         (JSC::globalFuncParseInt):
1947         (JSC::globalFuncParseFloat):
1948         (JSC::globalFuncIsNaN):
1949         (JSC::globalFuncIsFinite):
1950         (JSC::globalFuncEscape):
1951         (JSC::globalFuncUnescape):
1952         (JSC::globalFuncJSCPrint):
1953         * runtime/MathObject.cpp:
1954         (JSC::mathProtoFuncAbs):
1955         (JSC::mathProtoFuncACos):
1956         (JSC::mathProtoFuncASin):
1957         (JSC::mathProtoFuncATan):
1958         (JSC::mathProtoFuncATan2):
1959         (JSC::mathProtoFuncCeil):
1960         (JSC::mathProtoFuncCos):
1961         (JSC::mathProtoFuncExp):
1962         (JSC::mathProtoFuncFloor):
1963         (JSC::mathProtoFuncLog):
1964         (JSC::mathProtoFuncMax):
1965         (JSC::mathProtoFuncMin):
1966         (JSC::mathProtoFuncPow):
1967         (JSC::mathProtoFuncRound):
1968         (JSC::mathProtoFuncSin):
1969         (JSC::mathProtoFuncSqrt):
1970         (JSC::mathProtoFuncTan):
1971         * runtime/NativeErrorConstructor.cpp:
1972         (JSC::NativeErrorConstructor::construct):
1973         * runtime/NumberConstructor.cpp:
1974         (JSC::constructWithNumberConstructor):
1975         (JSC::callNumberConstructor):
1976         * runtime/NumberPrototype.cpp:
1977         (JSC::numberProtoFuncToString):
1978         (JSC::numberProtoFuncToFixed):
1979         (JSC::numberProtoFuncToExponential):
1980         (JSC::numberProtoFuncToPrecision):
1981         * runtime/ObjectConstructor.cpp:
1982         (JSC::constructObject):
1983         * runtime/ObjectPrototype.cpp:
1984         (JSC::objectProtoFuncHasOwnProperty):
1985         (JSC::objectProtoFuncIsPrototypeOf):
1986         (JSC::objectProtoFuncDefineGetter):
1987         (JSC::objectProtoFuncDefineSetter):
1988         (JSC::objectProtoFuncLookupGetter):
1989         (JSC::objectProtoFuncLookupSetter):
1990         (JSC::objectProtoFuncPropertyIsEnumerable):
1991         * runtime/PropertySlot.h:
1992         (JSC::PropertySlot::getValue):
1993         * runtime/RegExpConstructor.cpp:
1994         (JSC::constructRegExp):
1995         * runtime/RegExpObject.cpp:
1996         (JSC::RegExpObject::match):
1997         * runtime/RegExpPrototype.cpp:
1998         (JSC::regExpProtoFuncCompile):
1999         * runtime/StringConstructor.cpp:
2000         (JSC::stringFromCharCodeSlowCase):
2001         (JSC::stringFromCharCode):
2002         (JSC::constructWithStringConstructor):
2003         (JSC::callStringConstructor):
2004         * runtime/StringPrototype.cpp:
2005         (JSC::stringProtoFuncReplace):
2006         (JSC::stringProtoFuncCharAt):
2007         (JSC::stringProtoFuncCharCodeAt):
2008         (JSC::stringProtoFuncConcat):
2009         (JSC::stringProtoFuncIndexOf):
2010         (JSC::stringProtoFuncLastIndexOf):
2011         (JSC::stringProtoFuncMatch):
2012         (JSC::stringProtoFuncSearch):
2013         (JSC::stringProtoFuncSlice):
2014         (JSC::stringProtoFuncSplit):
2015         (JSC::stringProtoFuncSubstr):
2016         (JSC::stringProtoFuncSubstring):
2017         (JSC::stringProtoFuncLocaleCompare):
2018         (JSC::stringProtoFuncFontcolor):
2019         (JSC::stringProtoFuncFontsize):
2020         (JSC::stringProtoFuncAnchor):
2021         (JSC::stringProtoFuncLink):
2022
2023 2009-04-28  David Kilzer  <ddkilzer@apple.com>
2024
2025         A little more hardening for UString
2026
2027         Reviewed by Maciej Stachowiak.
2028
2029         Revised fix for <rdar://problem/5861045> in r42644.
2030
2031         * runtime/UString.cpp:
2032         (JSC::newCapacityWithOverflowCheck): Added.
2033         (JSC::concatenate): Used newCapacityWithOverflowCheck().
2034         (JSC::UString::append): Ditto.
2035
2036 2009-04-28  Oliver Hunt  <oliver@apple.com>
2037
2038         Reviewed by Gavin Barraclough.
2039
2040         Bring back r42969, this time with correct codegen
2041
2042         Add logic to the codegen for right shift to avoid jumping to a helper function
2043         when shifting a small floating point value.
2044
2045         * jit/JITArithmetic.cpp:
2046         (isSSE2Present):
2047         (JSC::JIT::compileFastArith_op_rshift):
2048         (JSC::JIT::compileFastArithSlow_op_rshift):
2049
2050 2009-04-28  Kevin Ollivier <kevino@theolliviers.com>
2051
2052         wxMSW build fix. Switch JSCore build back to static. 
2053
2054         * API/JSBase.h:
2055         * config.h:
2056         * jscore.bkl:
2057
2058 2009-04-28  Oliver Hunt  <oliver@apple.com>
2059
2060         Reviewed by NOBODY (Build fix).
2061
2062         Roll out r42969, due to hangs in build bot.
2063
2064         * jit/JITArithmetic.cpp:
2065         (JSC::JIT::compileFastArith_op_rshift):
2066         (JSC::JIT::compileFastArithSlow_op_rshift):
2067         (JSC::isSSE2Present):
2068
2069 2009-04-28  Xan Lopez  <xlopez@igalia.com>
2070
2071         Unreviewed: fix distcheck build, add (even more) missing files to list.
2072
2073         * GNUmakefile.am:
2074
2075 2009-04-28  Oliver Hunt  <oliver@apple.com>
2076
2077         Reviewed by Geoff Garen.
2078
2079         Improve performance of string indexing
2080
2081         Add a cti_get_by_val_string function to specialise indexing into a string object.
2082         This gives us a slight performance win on a number of string tests.
2083
2084         * jit/JITStubs.cpp:
2085         (JSC::JITStubs::cti_op_get_by_val):
2086         (JSC::JITStubs::cti_op_get_by_val_string):
2087         * jit/JITStubs.h:
2088
2089 2009-04-28  Oliver Hunt  <oliver@apple.com>
2090
2091         Reviewed by Geoff Garen.
2092
2093         Improve performance of right shifts of large or otherwise floating point values.
2094
2095         Add logic to the codegen for right shift to avoid jumping to a helper function
2096         when shifting a small floating point value.
2097
2098         * jit/JITArithmetic.cpp:
2099         (isSSE2Present): Moved to the head of file.
2100         (JSC::JIT::compileFastArith_op_rshift):
2101         (JSC::JIT::compileFastArithSlow_op_rshift):
2102
2103 2009-04-28  Xan Lopez  <xlopez@igalia.com>
2104
2105         Unreviewed: fix distcheck build, add (more) missing files to list.
2106
2107         * GNUmakefile.am:
2108
2109 2009-04-28  Xan Lopez  <xlopez@igalia.com>
2110
2111         Unreviewed: fix distcheck build, add missing header to file list.
2112
2113         * GNUmakefile.am:
2114
2115 2009-04-28  Gavin Barraclough  <barraclough@apple.com>
2116
2117         Rubber stamped by Maciej "Henry Morgan" Stachowiak.
2118
2119         Enable YARR.
2120         (Again.)
2121
2122         * wtf/Platform.h:
2123
2124 2009-04-27  Gavin Barraclough  <barraclough@apple.com>
2125
2126         Reviewed by Maciej Stachowiak.
2127
2128         Tweak a loop condition to keep GCC happy,
2129         some GCCs seem to be having issues with this. :-/
2130
2131         * bytecompiler/BytecodeGenerator.cpp:
2132         (JSC::BytecodeGenerator::breakTarget):
2133         * wtf/Platform.h:
2134
2135 2009-04-27  Adam Roben  <aroben@apple.com>
2136
2137         Windows Debug build fix
2138
2139         Not sure why the buildbots weren't affected by this problem.
2140
2141         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Let VS
2142         re-order the file list, and added JavaScriptCore[_debug].def to the
2143         project. This was not necessary for the fix, but made making the fix
2144         easier.
2145
2146         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
2147         Removed a function that no longer exists.
2148
2149 2009-04-26  Gavin Barraclough  <barraclough@apple.com>
2150
2151         Reviewed by Weinig Sam.
2152
2153         Fix for https://bugs.webkit.org/show_bug.cgi?id=25416
2154         "Cached prototype accesses unsafely hoist property storage load above structure checks."
2155         
2156         Do not hoist the load of the pointer to the property storage array.
2157
2158         No performance impact.
2159
2160         * jit/JITPropertyAccess.cpp:
2161         (JSC::JIT::privateCompileGetByIdProto):
2162         (JSC::JIT::privateCompileGetByIdProtoList):
2163
2164 2009-04-26  Gavin Barraclough  <barraclough@apple.com>
2165
2166         Reviewed by Geoffrey "Gaffe or energy?" Garen.
2167
2168         Randomize address requested by ExecutableAllocatorFixedVMPool.
2169
2170         * jit/ExecutableAllocatorFixedVMPool.cpp:
2171         (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
2172
2173 2009-04-26  Sam Weinig  <sam@webkit.org>
2174
2175         Reviewed by Eric Seidel.
2176
2177         Remove scons-based build system.
2178
2179         * JavaScriptCore.scons: Removed.
2180
2181 2009-04-25  Oliver Hunt  <oliver@apple.com>
2182
2183         Reviewed by NOBODY (Buildfix).
2184
2185         Make HAVE_MADV_FREE darwin only for now
2186
2187         * wtf/Platform.h:
2188
2189 2009-04-25  Jan Michael Alonzo  <jmalonzo@webkit.org>
2190
2191         Reviewed by Oliver Hunt.
2192
2193         Gtk build fix - check if we have MADV_FREE before using it.
2194
2195         * interpreter/RegisterFile.cpp:
2196         (JSC::RegisterFile::releaseExcessCapacity):
2197         * wtf/Platform.h:
2198
2199 2009-04-24  Kevin Ollivier  <kevino@theolliviers.com>
2200
2201         wx build fix. Switching JSCore from a static lib to a dynamic lib
2202         to match the Apple build and fix symbol exports.
2203
2204         * jscore.bkl:
2205
2206 2009-04-24  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
2207
2208         Rubber-stamped by Mark Rowe.
2209
2210         https://bugs.webkit.org/show_bug.cgi?id=25337
2211         Move ThreadingQt.cpp under the qt directory.
2212
2213         * JavaScriptCore.pri:
2214         * wtf/ThreadingQt.cpp: Removed.
2215         * wtf/qt/ThreadingQt.cpp: Copied from JavaScriptCore/wtf/ThreadingQt.cpp.
2216
2217 2009-04-24  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
2218
2219         Rubber-stamped by Mark Rowe.
2220
2221         https://bugs.webkit.org/show_bug.cgi?id=25338
2222         Move ThreadingGtk.cpp under the gtk directory.
2223
2224         * GNUmakefile.am:
2225         * wtf/ThreadingGtk.cpp: Removed.
2226         * wtf/gtk/ThreadingGtk.cpp: Copied from JavaScriptCore/wtf/ThreadingGtk.cpp.
2227
2228 2009-04-24  Gavin Barraclough  <barraclough@apple.com>
2229
2230         Reviewed by Sam "Wesley" Weinig.
2231
2232         Improve performance to YARR interpreter.
2233         (From about 3x slower than PCRE on regex-dna to about 30% slower).
2234
2235         * yarr/RegexCompiler.cpp:
2236         (JSC::Yarr::RegexPatternConstructor::setupAlternativeOffsets):
2237         * yarr/RegexInterpreter.cpp:
2238         (JSC::Yarr::Interpreter::checkCharacter):
2239         (JSC::Yarr::Interpreter::checkCasedCharacter):
2240         (JSC::Yarr::Interpreter::backtrackPatternCharacter):
2241         (JSC::Yarr::Interpreter::backtrackPatternCasedCharacter):
2242         (JSC::Yarr::Interpreter::matchParentheticalAssertionBegin):
2243         (JSC::Yarr::Interpreter::matchParentheticalAssertionEnd):
2244         (JSC::Yarr::Interpreter::backtrackParentheticalAssertionBegin):
2245         (JSC::Yarr::Interpreter::backtrackParentheticalAssertionEnd):
2246         (JSC::Yarr::Interpreter::matchDisjunction):
2247         (JSC::Yarr::Interpreter::interpret):
2248         (JSC::Yarr::ByteCompiler::atomPatternCharacter):
2249         (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternBegin):
2250         (JSC::Yarr::ByteCompiler::atomParentheticalAssertionBegin):
2251         (JSC::Yarr::ByteCompiler::closeAlternative):
2252         (JSC::Yarr::ByteCompiler::closeBodyAlternative):
2253         (JSC::Yarr::ByteCompiler::atomParenthesesEnd):
2254         (JSC::Yarr::ByteCompiler::regexBegin):
2255         (JSC::Yarr::ByteCompiler::regexEnd):
2256         (JSC::Yarr::ByteCompiler::alterantiveBodyDisjunction):
2257         (JSC::Yarr::ByteCompiler::alterantiveDisjunction):
2258         (JSC::Yarr::ByteCompiler::emitDisjunction):
2259         * yarr/RegexInterpreter.h:
2260         (JSC::Yarr::ByteTerm::):
2261         (JSC::Yarr::ByteTerm::ByteTerm):
2262         (JSC::Yarr::ByteTerm::BodyAlternativeBegin):
2263         (JSC::Yarr::ByteTerm::BodyAlternativeDisjunction):
2264         (JSC::Yarr::ByteTerm::BodyAlternativeEnd):
2265         (JSC::Yarr::ByteTerm::AlternativeBegin):
2266         (JSC::Yarr::ByteTerm::AlternativeDisjunction):
2267         (JSC::Yarr::ByteTerm::AlternativeEnd):
2268         (JSC::Yarr::ByteTerm::SubpatternBegin):
2269         (JSC::Yarr::ByteTerm::SubpatternEnd):
2270         * yarr/RegexJIT.cpp:
2271         (JSC::Yarr::RegexGenerator::generateParentheticalAssertion):
2272         * yarr/RegexPattern.h:
2273
2274 2009-04-24  Rob Raguet-Schofield  <ragfield@gmail.com>
2275
2276         Rubber-stamped by Mark Rowe.
2277
2278         * wtf/CurrentTime.h: Fix a typo in a comment.
2279
2280 2009-04-24  Oliver Hunt  <oliver@apple.com>
2281
2282         Reviewed by NOBODY (Build fix).
2283
2284         Add reinterpret_cast
2285
2286         * interpreter/RegisterFile.cpp:
2287         (JSC::RegisterFile::releaseExcessCapacity):
2288
2289 2009-04-23  Oliver Hunt  <oliver@apple.com>
2290
2291         Reviewed by Geoff Garen.
2292
2293         <rdar://problem/6050421> JavaScript register file should remap to release physical pages accumulated during deep recursion
2294
2295         We now track the maximum extent of the RegisterFile, and when we reach the final
2296         return from JS (so the stack portion of the registerfile becomes empty) we see
2297         if that extent is greater than maxExcessCapacity.  If it is we use madvise or
2298         VirtualFree to release the physical pages that were backing the excess.
2299
2300         * interpreter/RegisterFile.cpp:
2301         (JSC::RegisterFile::releaseExcessCapacity):
2302         * interpreter/RegisterFile.h:
2303         (JSC::RegisterFile::RegisterFile):
2304         (JSC::RegisterFile::shrink):
2305         (JSC::RegisterFile::grow):
2306
2307 2009-04-23  Mark Rowe  <mrowe@apple.com>
2308
2309         With great sadness and a heavy heart I switch us back from YARR to WREC in
2310         order to restore greenness to the world once more.
2311
2312         * wtf/Platform.h:
2313
2314 2009-04-23  Mark Rowe  <mrowe@apple.com>
2315
2316         More Windows build fixage.
2317
2318         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2319         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
2320
2321 2009-04-23  Mark Rowe  <mrowe@apple.com>
2322
2323         Attempt to fix the Windows build.
2324
2325         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:  Remove a symbol that no longer exists.
2326
2327 2009-04-23  Francisco Tolmasky  <francisco@280north.com>
2328
2329         BUG 24604: WebKit profiler reports incorrect total times
2330         <https://bugs.webkit.org/show_bug.cgi?id=24604>
2331
2332         Reviewed by Timothy Hatcher and Kevin McCullough.
2333
2334         * JavaScriptCore.exp:
2335         * JavaScriptCore.xcodeproj/project.pbxproj:
2336         * profiler/CallIdentifier.h:
2337         (JSC::CallIdentifier::Hash::hash):
2338         (JSC::CallIdentifier::Hash::equal):
2339         (JSC::CallIdentifier::hash):
2340         (WTF::):
2341         * profiler/HeavyProfile.cpp: Removed.
2342         * profiler/HeavyProfile.h: Removed.
2343         * profiler/Profile.cpp: No more need for TreeProfile/HeavyProfile
2344         (JSC::Profile::create):
2345         * profiler/Profile.h:
2346         * profiler/ProfileNode.cpp:
2347         * profiler/ProfileNode.h:
2348         * profiler/TreeProfile.cpp: Removed.
2349         * profiler/TreeProfile.h: Removed.
2350
2351 2009-04-23  Gavin Barraclough  <barraclough@apple.com>
2352
2353         Not Reviewed.
2354
2355         Speculative Windows build fix II.
2356
2357         * yarr/RegexInterpreter.cpp:
2358
2359 2009-04-23  Gavin Barraclough  <barraclough@apple.com>
2360
2361         Not Reviewed.
2362
2363         Speculative Windows build fix.
2364
2365         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2366         * runtime/RegExp.cpp:
2367
2368 2009-04-23  Gavin Barraclough  <barraclough@apple.com>
2369
2370         Rubber stamped by salty sea dogs Sam & Geoff.
2371
2372         Enable YARR_JIT by default (where supported), replacing WREC.
2373
2374         * wtf/Platform.h:
2375
2376 2009-04-23  Gavin Barraclough  <barraclough@apple.com>
2377
2378         Reviewed by Geoff "Dread Pirate Roberts" Garen.
2379
2380         Various small fixes to YARR JIT, in preparation for enabling it by default.
2381
2382         * Correctly index into the callframe when storing restart addresses for
2383           nested alternatives.
2384         * Allow backtracking back into matched alternatives of parentheses.
2385         * Fix callframe offset calculation for parenthetical assertions.
2386         * When a set of parenthese are quantified with a fixed and variable portion,
2387           and the variable portion is quantified once, this should not reset the
2388           pattern match on failure to match (the last match from the firxed portion
2389           should be preserved).
2390         * Up the pattern size limit to match PCRE's new limit.
2391         * Unlclosed parentheses should be reported with the message "missing )".
2392
2393         * wtf/Platform.h:
2394         * yarr/RegexCompiler.cpp:
2395         (JSC::Yarr::RegexPatternConstructor::quantifyAtom):
2396         (JSC::Yarr::RegexPatternConstructor::setupAlternativeOffsets):
2397         * yarr/RegexInterpreter.cpp:
2398         (JSC::Yarr::Interpreter::matchParentheses):
2399         (JSC::Yarr::Interpreter::backtrackParentheses):
2400         (JSC::Yarr::ByteCompiler::emitDisjunction):
2401         * yarr/RegexJIT.cpp:
2402         (JSC::Yarr::RegexGenerator::loadFromFrameAndJump):
2403         (JSC::Yarr::RegexGenerator::generateParenthesesDisjunction):
2404         (JSC::Yarr::RegexGenerator::generateParentheticalAssertion):
2405         (JSC::Yarr::RegexGenerator::generateTerm):
2406         (JSC::Yarr::executeRegex):
2407         * yarr/RegexParser.h:
2408         (JSC::Yarr::Parser::):
2409         (JSC::Yarr::Parser::parseTokens):
2410         (JSC::Yarr::Parser::parse):
2411         * yarr/RegexPattern.h:
2412         (JSC::Yarr::PatternTerm::):
2413         (JSC::Yarr::PatternTerm::PatternTerm):
2414
2415 2009-04-22  Mark Rowe  <mrowe@apple.com>
2416
2417         Rubber-stamped by Gavin Barraclough.
2418
2419         Add the m_ prefix on FixedVMPoolAllocator's member variables, and fix typos in a few comments.
2420
2421         * jit/ExecutableAllocatorFixedVMPool.cpp:
2422         (JSC::FixedVMPoolAllocator::addToFreeList):
2423         (JSC::FixedVMPoolAllocator::coalesceFreeSpace):
2424         (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
2425         (JSC::FixedVMPoolAllocator::alloc):
2426         (JSC::FixedVMPoolAllocator::free):
2427         (JSC::FixedVMPoolAllocator::isWithinVMPool):
2428
2429 2009-04-22  Mark Rowe  <mrowe@apple.com>
2430
2431         Rubber-stamped by Gavin Barraclough.
2432
2433         Add some assertions to FixedVMPoolAllocator to guard against cases where we
2434         attempt to free memory that didn't originate from the pool, or we attempt to
2435         hand out a bogus address from alloc.
2436
2437         * jit/ExecutableAllocatorFixedVMPool.cpp:
2438         (JSC::FixedVMPoolAllocator::release):
2439         (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
2440         (JSC::FixedVMPoolAllocator::alloc):
2441         (JSC::FixedVMPoolAllocator::free):
2442         (JSC::FixedVMPoolAllocator::isWithinVMPool):
2443
2444 2009-04-22  Gavin Barraclough  <barraclough@apple.com>
2445
2446         Rubber stamped by Sam "Blackbeard" Weinig.
2447
2448         Although pirates do spell the word 'generate' as 'genertate',
2449         webkit developers do not.  Fixertate.
2450
2451         * yarr/RegexJIT.cpp:
2452         (JSC::Yarr::RegexGenerator::generateAssertionBOL):
2453         (JSC::Yarr::RegexGenerator::generateAssertionEOL):
2454         (JSC::Yarr::RegexGenerator::generateAssertionWordBoundary):
2455         (JSC::Yarr::RegexGenerator::generatePatternCharacterSingle):
2456         (JSC::Yarr::RegexGenerator::generatePatternCharacterPair):
2457         (JSC::Yarr::RegexGenerator::generatePatternCharacterFixed):
2458         (JSC::Yarr::RegexGenerator::generatePatternCharacterGreedy):
2459         (JSC::Yarr::RegexGenerator::generatePatternCharacterNonGreedy):
2460         (JSC::Yarr::RegexGenerator::generateCharacterClassSingle):
2461         (JSC::Yarr::RegexGenerator::generateCharacterClassFixed):
2462         (JSC::Yarr::RegexGenerator::generateCharacterClassGreedy):
2463         (JSC::Yarr::RegexGenerator::generateCharacterClassNonGreedy):
2464         (JSC::Yarr::RegexGenerator::generateTerm):
2465
2466 2009-04-22  Gavin Barraclough  <barraclough@apple.com>
2467
2468         Reviewed by Sam "Blackbeard" Weinig.
2469
2470         Improvements to YARR JIT.  This patch expands support in three key areas:
2471             * Add (temporary) support for falling back to PCRE for expressions not supported.
2472             * Add support for x86_64 and Windows.
2473             * Add support for singly quantified parentheses (? and ??), alternatives within
2474               parentheses, and parenthetical assertions.
2475
2476         * runtime/RegExp.cpp:
2477         (JSC::RegExp::match):
2478         * yarr/RegexJIT.cpp:
2479         (JSC::Yarr::RegexGenerator::storeToFrame):
2480         (JSC::Yarr::RegexGenerator::storeToFrameWithPatch):
2481         (JSC::Yarr::RegexGenerator::loadFromFrameAndJump):
2482         (JSC::Yarr::RegexGenerator::AlternativeBacktrackRecord::AlternativeBacktrackRecord):
2483         (JSC::Yarr::RegexGenerator::TermGenerationState::resetAlternative):
2484         (JSC::Yarr::RegexGenerator::TermGenerationState::resetTerm):
2485         (JSC::Yarr::RegexGenerator::TermGenerationState::jumpToBacktrack):
2486         (JSC::Yarr::RegexGenerator::TermGenerationState::plantJumpToBacktrackIfExists):
2487         (JSC::Yarr::RegexGenerator::TermGenerationState::addBacktrackJump):
2488         (JSC::Yarr::RegexGenerator::TermGenerationState::linkAlternativeBacktracks):
2489         (JSC::Yarr::RegexGenerator::TermGenerationState::propagateBacktrackingFrom):
2490         (JSC::Yarr::RegexGenerator::genertateAssertionBOL):
2491         (JSC::Yarr::RegexGenerator::genertateAssertionEOL):
2492         (JSC::Yarr::RegexGenerator::matchAssertionWordchar):
2493         (JSC::Yarr::RegexGenerator::genertateAssertionWordBoundary):
2494         (JSC::Yarr::RegexGenerator::genertatePatternCharacterSingle):
2495         (JSC::Yarr::RegexGenerator::genertatePatternCharacterPair):
2496         (JSC::Yarr::RegexGenerator::genertatePatternCharacterFixed):
2497         (JSC::Yarr::RegexGenerator::genertatePatternCharacterGreedy):
2498         (JSC::Yarr::RegexGenerator::genertatePatternCharacterNonGreedy):
2499         (JSC::Yarr::RegexGenerator::genertateCharacterClassSingle):
2500         (JSC::Yarr::RegexGenerator::genertateCharacterClassFixed):
2501         (JSC::Yarr::RegexGenerator::genertateCharacterClassGreedy):
2502         (JSC::Yarr::RegexGenerator::genertateCharacterClassNonGreedy):
2503         (JSC::Yarr::RegexGenerator::generateParenthesesDisjunction):
2504         (JSC::Yarr::RegexGenerator::generateParenthesesSingle):
2505         (JSC::Yarr::RegexGenerator::generateParentheticalAssertion):
2506         (JSC::Yarr::RegexGenerator::generateTerm):
2507         (JSC::Yarr::RegexGenerator::generateDisjunction):
2508         (JSC::Yarr::RegexGenerator::generateEnter):
2509         (JSC::Yarr::RegexGenerator::generateReturn):
2510         (JSC::Yarr::RegexGenerator::RegexGenerator):
2511         (JSC::Yarr::RegexGenerator::generate):
2512         (JSC::Yarr::RegexGenerator::compile):
2513         (JSC::Yarr::RegexGenerator::generationFailed):
2514         (JSC::Yarr::jitCompileRegex):
2515         (JSC::Yarr::executeRegex):
2516         * yarr/RegexJIT.h:
2517         (JSC::Yarr::RegexCodeBlock::RegexCodeBlock):
2518         (JSC::Yarr::RegexCodeBlock::~RegexCodeBlock):
2519
2520 2009-04-22  Sam Weinig  <sam@webkit.org>
2521
2522         Rubber-stamped by Darin Adler.
2523
2524         Fix for <rdar://problem/6816957>
2525         Turn off Geolocation by default
2526
2527         * Configurations/FeatureDefines.xcconfig:
2528
2529 2009-04-22  Oliver Hunt  <oliver@apple.com>
2530
2531         Reviewed by NOBODY (Buildfix).
2532
2533         * interpreter/CachedCall.h:
2534
2535 2009-04-21  Oliver Hunt  <oliver@apple.com>
2536
2537         Reviewed by NOBODY (Build fix).
2538
2539         * runtime/StringPrototype.cpp:
2540
2541 2009-04-21  Oliver Hunt  <oliver@apple.com>
2542
2543         Reviewed by Maciej Stachowiak.
2544
2545         Improve String.replace performance slightly
2546
2547         Apply our vm reentry caching logic to String.replace with global
2548         regexes.
2549
2550         * runtime/StringPrototype.cpp:
2551         (JSC::stringProtoFuncReplace):
2552
2553 2009-04-21  Geoffrey Garen  <ggaren@apple.com>
2554
2555         Reviewed by Cameron Zwarich and Oliver Hunt.
2556         
2557         Re-Fixed <rdar://problem/6406045> REGRESSION: Stack overflow on PowerPC on
2558         fast/workers/use-machine-stack.html (22531)
2559         
2560         SunSpider reports no change.
2561         
2562         Use a larger recursion limit on the main thread (because we can, and
2563         there's some evidence that it may improve compatibility), and a smaller
2564         recursion limit on secondary threads (because they tend to have smaller
2565         stacks).
2566
2567         * interpreter/Interpreter.cpp:
2568         (JSC::Interpreter::execute):
2569         (JSC::Interpreter::prepareForRepeatCall):
2570         * interpreter/Interpreter.h:
2571         (JSC::): Ditto. I wrote the recursion test slightly funny, so that the
2572         common case remains a simple compare to constant.
2573
2574         * runtime/ArrayPrototype.cpp:
2575         (JSC::arrayProtoFuncToString):
2576         (JSC::arrayProtoFuncToLocaleString):
2577         (JSC::arrayProtoFuncJoin): Conservatively, set the array recursion limits
2578         to the lower, secondary thread limit. We can do something fancier if
2579         compatibility moves us, but this seems sufficient for now.
2580
2581 2009-04-21  Geoffrey Garen  <ggaren@apple.com>
2582
2583         Rubber-stamped by Adam Roben.
2584         
2585         Disabled one more Mozilla JS test because it fails intermittently on Windows.
2586         (See https://bugs.webkit.org/show_bug.cgi?id=25160.)
2587
2588         * tests/mozilla/expected.html:
2589
2590 2009-04-21  Adam Roben  <aroben@apple.com>
2591
2592         Rename JavaScriptCore_debug.dll to JavaScriptCore.dll in the Debug
2593         configuration
2594
2595         This matches the naming scheme for WebKit.dll, and will be necessary
2596         once Safari links against JavaScriptCore.dll. This change also causes
2597         run-safari not to fail (because the launcher printed by FindSafari was
2598         always looking for JavaScriptCore.dll, never
2599         JavaScriptCore_debug.dll).
2600
2601         Part of Bug 25305: can't run safari or drt on windows
2602         <https://bugs.webkit.org/show_bug.cgi?id=25305>
2603
2604         Reviewed by Steve Falkenburg and Sam Weinig.
2605
2606         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2607         * JavaScriptCore.vcproj/jsc/jsc.vcproj:
2608         * JavaScriptCore.vcproj/testapi/testapi.vcproj:
2609         Use $(WebKitDLLConfigSuffix) for naming JavaScriptCore.{dll,lib}.
2610
2611 2009-04-21  Adam Roben  <aroben@apple.com>
2612
2613         Fix JavaScriptCore build on VC++ Express
2614
2615         Reviewed by Steve Falkenburg and Sam Weinig.
2616
2617         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Link
2618         explicitly against gdi32.lib and oleaut32.lib.
2619
2620 2009-04-21  Geoffrey Garen  <ggaren@apple.com>
2621
2622         Reviewed by Mark Rowe.
2623         
2624         Tiger crash fix: Put VM tags in their own header file, and fixed up the
2625         #ifdefs so they're not used on Tiger.
2626
2627         * JavaScriptCore.xcodeproj/project.pbxproj:
2628         * interpreter/RegisterFile.h:
2629         (JSC::RegisterFile::RegisterFile):
2630         * jit/ExecutableAllocatorFixedVMPool.cpp:
2631         (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
2632         * jit/ExecutableAllocatorPosix.cpp:
2633         (JSC::ExecutablePool::systemAlloc):
2634         * runtime/Collector.cpp:
2635         (JSC::allocateBlock):
2636         * wtf/VMTags.h: Added.
2637
2638 2009-04-20  Steve Falkenburg  <sfalken@apple.com>
2639
2640         More Windows build fixes.
2641
2642         * JavaScriptCore.vcproj/JavaScriptCore.make: Copy DLLs, PDBs.
2643         * JavaScriptCore.vcproj/JavaScriptCore.resources: Added.
2644         * JavaScriptCore.vcproj/JavaScriptCore.resources/Info.plist: Added.
2645         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc: Added.
2646         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add version stamping, resource copying.
2647
2648 2009-04-20  Steve Falkenburg  <sfalken@apple.com>
2649
2650         Separate JavaScriptCore.dll from WebKit.dll.
2651         Slight performance improvement or no change on benchmarks.
2652         
2653         Allows us to break a circular dependency between CFNetwork and WebKit on Windows,
2654         and simplifies standalone JavaScriptCore builds.
2655
2656         Reviewed by Oliver Hunt.
2657
2658         * API/JSBase.h: Export symbols with JS_EXPORT when using MSVC.
2659         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2660         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Build JavaScriptCore as a DLL instead of a static library.
2661         * config.h: Specify __declspec(dllexport/dllimport) appropriately when exporting data.
2662         * runtime/InternalFunction.h: Specify JS_EXPORTDATA on exported data.
2663         * runtime/JSArray.h: Specify JS_EXPORTDATA on exported data.
2664         * runtime/JSFunction.h: Specify JS_EXPORTDATA on exported data.
2665         * runtime/StringObject.h: Specify JS_EXPORTDATA on exported data.
2666         * runtime/UString.h: Specify JS_EXPORTDATA on exported data.
2667
2668 2009-04-20  Sam Weinig  <sam@webkit.org>
2669
2670         Reviewed by Kevin McCullough.
2671
2672         Always tag mmaped memory on darwin and clean up #defines
2673         now that they are a little bigger.
2674
2675         * interpreter/RegisterFile.h:
2676         (JSC::RegisterFile::RegisterFile):
2677         * jit/ExecutableAllocatorFixedVMPool.cpp:
2678         (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
2679         * jit/ExecutableAllocatorPosix.cpp:
2680         (JSC::ExecutablePool::systemAlloc):
2681         * runtime/Collector.cpp:
2682         (JSC::allocateBlock):
2683
2684 2009-04-20  Sam Weinig  <sam@webkit.org>
2685
2686         Rubber-stamped by Tim Hatcher.
2687
2688         Add licenses for xcconfig files.
2689
2690         * Configurations/Base.xcconfig:
2691         * Configurations/DebugRelease.xcconfig:
2692         * Configurations/FeatureDefines.xcconfig:
2693         * Configurations/JavaScriptCore.xcconfig:
2694         * Configurations/Version.xcconfig:
2695
2696 2009-04-20  Ariya Hidayat  <ariya.hidayat@nokia.com>
2697
2698         Build fix for Qt port (after r42646). Not reviewed.
2699
2700         * wtf/unicode/qt4/UnicodeQt4.h: Added U16_PREV.
2701
2702 2009-04-19  Sam Weinig  <sam@webkit.org>
2703
2704         Reviewed by Darin Adler.
2705
2706         Better fix for JSStringCreateWithCFString hardening.
2707
2708         * API/JSStringRefCF.cpp:
2709         (JSStringCreateWithCFString):
2710
2711 2009-04-19  Sam Weinig  <sam@webkit.org>
2712
2713         Reviewed by Dan Bernstein.
2714
2715         Fix for <rdar://problem/5860954>
2716         Harden JSStringCreateWithCFString against malformed CFStringRefs.
2717
2718         * API/JSStringRefCF.cpp:
2719         (JSStringCreateWithCFString):
2720
2721 2009-04-19  David Kilzer  <ddkilzer@apple.com>
2722
2723         Make FEATURE_DEFINES completely dynamic
2724
2725         Reviewed by Darin Adler.
2726
2727         Make FEATURE_DEFINES depend on individual ENABLE_FEATURE_NAME
2728         variables for each feature, making it possible to remove all
2729         knowledge of FEATURE_DEFINES from build-webkit.
2730
2731         * Configurations/FeatureDefines.xcconfig: Extract a variable
2732         from FEATURE_DEFINES for each feature setting.
2733
2734 2009-04-18  Sam Weinig  <sam@webkit.org>
2735
2736         Reviewed by Dan Bernstein.
2737
2738         Fix typo.  s/VM_MEMORY_JAVASCRIPT_JIT_REGISTER_FILE/VM_MEMORY_JAVASCRIPT_CORE/
2739
2740         * runtime/Collector.cpp:
2741         (JSC::allocateBlock): Fix bozo typo.
2742
2743 2009-04-18  Sam Weinig  <sam@webkit.org>
2744
2745         Reviewed by Anders Carlsson.
2746
2747         Fix for <rdar://problem/6801555> Tag JavaScript memory on SnowLeopard
2748
2749         * interpreter/RegisterFile.h:
2750         (JSC::RegisterFile::RegisterFile):
2751         * jit/ExecutableAllocatorFixedVMPool.cpp:
2752         (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
2753         * jit/ExecutableAllocatorPosix.cpp:
2754         (JSC::ExecutablePool::systemAlloc):
2755         * runtime/Collector.cpp:
2756         (JSC::allocateBlock):
2757
2758 2009-04-18  Drew Wilson  <amw@apple.com>
2759
2760         <rdar://problem/6781407> VisiblePosition.characterAfter should return UChar32
2761
2762         Reviewed by Dan Bernstein.
2763
2764         * wtf/unicode/icu/UnicodeIcu.h:
2765         (WTF::Unicode::hasLineBreakingPropertyComplexContextOrIdeographic): Added.
2766
2767 2009-04-18  Sam Weinig  <sam@webkit.org>
2768
2769         Reviewed by Mark Rowe.
2770
2771         Fix for <rdar://problem/5861045>
2772         A little bit of hardening for UString.
2773
2774         * runtime/UString.cpp:
2775         (JSC::concatenate):
2776         (JSC::UString::append):
2777
2778 2009-04-18  Sam Weinig  <sam@webkit.org>
2779
2780         Reviewed by Mark Rowe and Dan Bernstein.
2781
2782         Fix for <rdar://problem/5861188>
2783         A little bit of hardening for Vector.
2784
2785         * wtf/Vector.h:
2786         (WTF::Vector<T, inlineCapacity>::append):
2787         (WTF::Vector<T, inlineCapacity>::insert):
2788
2789 2009-04-17  Gavin Barraclough  <barraclough@apple.com>
2790
2791         Reviewed by Geoff Garen.
2792
2793         On x86_64, make all JIT-code allocations from a new heap, managed
2794         by FixedVMPoolAllocator.  This class allocates a single large (2Gb)
2795         pool of virtual memory from which all further allocations take place.
2796         Since all JIT code is allocated from this pool, we can continue to
2797         safely assume (as is already asserted) that it will always be possible
2798         to link any JIT-code to JIT-code jumps and calls.
2799
2800         * JavaScriptCore.xcodeproj/project.pbxproj:
2801             Add new file.
2802         * jit/ExecutableAllocatorFixedVMPool.cpp: Added.
2803         (JSC::FreeListEntry::FreeListEntry):
2804         (JSC::AVLTreeAbstractorForFreeList::get_less):
2805         (JSC::AVLTreeAbstractorForFreeList::set_less):
2806         (JSC::AVLTreeAbstractorForFreeList::get_greater):
2807         (JSC::AVLTreeAbstractorForFreeList::set_greater):
2808         (JSC::AVLTreeAbstractorForFreeList::get_balance_factor):
2809         (JSC::AVLTreeAbstractorForFreeList::set_balance_factor):
2810         (JSC::AVLTreeAbstractorForFreeList::null):
2811         (JSC::AVLTreeAbstractorForFreeList::compare_key_key):
2812         (JSC::AVLTreeAbstractorForFreeList::compare_key_node):
2813         (JSC::AVLTreeAbstractorForFreeList::compare_node_node):
2814         (JSC::sortFreeListEntriesByPointer):
2815         (JSC::sortCommonSizedAllocations):
2816         (JSC::FixedVMPoolAllocator::release):
2817         (JSC::FixedVMPoolAllocator::reuse):
2818         (JSC::FixedVMPoolAllocator::addToFreeList):
2819         (JSC::FixedVMPoolAllocator::coalesceFreeSpace):
2820         (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
2821         (JSC::FixedVMPoolAllocator::alloc):
2822         (JSC::FixedVMPoolAllocator::free):
2823         (JSC::ExecutableAllocator::intializePageSize):
2824         (JSC::ExecutablePool::systemAlloc):
2825         (JSC::ExecutablePool::systemRelease):
2826             The new 2Gb heap class!
2827         * jit/ExecutableAllocatorPosix.cpp:
2828             Disable use of this implementation on x86_64.
2829         * wtf/AVLTree.h:
2830             Add missing variable initialization.
2831         (WTF::::remove):
2832
2833 2009-04-17  Oliver Hunt  <oliver@apple.com>
2834
2835         Reviewed by Darin Adler.
2836
2837         Fix bug where the VM reentry cache would not correctly unroll the cached callframe
2838
2839         Fix a check that was intended to mark a cached call as invalid when the callframe could
2840         not be constructed.  Instead it was just checking that there was a place to put the
2841         exception.  This eventually results in a non-recoverable RegisterFile starvation.
2842
2843         * interpreter/CachedCall.h:
2844         (JSC::CachedCall::CachedCall):
2845         (JSC::CachedCall::call): add assertion to ensure we don't use a bad callframe
2846
2847 2009-04-17  David Kilzer  <ddkilzer@apple.com>
2848
2849         Simplify FEATURE_DEFINES definition
2850
2851         Reviewed by Darin Adler.
2852
2853         This moves FEATURE_DEFINES and its related ENABLE_FEATURE_NAME
2854         variables to their own FeatureDefines.xcconfig file.  It also
2855         extracts a new ENABLE_GEOLOCATION variable so that
2856         FEATURE_DEFINES only needs to be defined once.
2857
2858         * Configurations/FeatureDefines.xcconfig: Added.
2859         * Configurations/JavaScriptCore.xcconfig: Removed definition of
2860         ENABLE_SVG_DOM_OBJC_BINDINGS and FEATURE_DEFINES.  Added include
2861         of FeatureDefines.xcconfig.
2862         * JavaScriptCore.xcodeproj/project.pbxproj: Added
2863         FeatureDefines.xcconfig file.
2864
2865 2009-04-08  Mihnea Ovidenie  <mihnea@adobe.com>
2866
2867         Reviewed by Oliver Hunt.
2868
2869         Bug 25027: JavaScript parseInt wrong on negative numbers
2870         <https://bugs.webkit.org/show_bug.cgi?id=25027>
2871
2872         When dealing with negative numbers, parseInt should use ceil instead of floor.
2873
2874         * runtime/JSGlobalObjectFunctions.cpp:
2875         (JSC::globalFuncParseInt):
2876
2877 2009-04-16  Stephanie Lewis  <slewis@apple.com>
2878
2879         Reviewed by Oliver Hunt.
2880
2881         <rdar://problem/6744652> 32-bit to 64-bit: Javascript hash tables double in size
2882
2883         Remove perfect hash optimization which removes 1 MB of overhead on 32-bit and almost 2 MB on 64-bit.  Removing the optimization was not a regression on SunSpider and the acid 3 test still passes.
2884
2885         * create_hash_table:
2886         * runtime/Lookup.cpp:
2887         (JSC::HashTable::createTable):
2888         (JSC::HashTable::deleteTable):
2889         * runtime/Lookup.h:
2890         (JSC::HashEntry::initialize):
2891         (JSC::HashEntry::next):
2892         (JSC::HashTable::entry):
2893         * runtime/Structure.cpp:
2894         (JSC::Structure::getEnumerableNamesFromClassInfoTable):
2895
2896 2009-04-16  Oliver Hunt  <oliver@apple.com>
2897
2898         Reviewed by Gavin Barraclough.
2899
2900         Fix subtle error in optimised VM reentry in Array.sort
2901
2902         Basically to ensure we don't accidentally invalidate the cached callframe
2903         we should be using the cached callframe rather than our own exec state.
2904         While the old behaviour was wrong i have been unable to actually create a
2905         test case where anything actually ends up going wrong.
2906
2907         * interpreter/CachedCall.h:
2908         (JSC::CachedCall::newCallFrame):
2909         * runtime/JSArray.cpp:
2910         (JSC::AVLTreeAbstractorForArrayCompare::compare_key_key):
2911
2912 2009-04-16  Oliver Hunt  <oliver@apple.com>
2913
2914         Reviewed by Gavin Barraclough.
2915
2916         Optimise op_resolve_base
2917
2918         If we can statically find a property we are trying to resolve
2919         the base of, the base is guaranteed to be the global object.
2920
2921         * bytecompiler/BytecodeGenerator.cpp:
2922         (JSC::BytecodeGenerator::emitResolveBase):
2923
2924 2009-04-16  Oliver Hunt  <oliver@apple.com>
2925
2926         Reviewed by Gavin Barraclough.
2927
2928         Improve performance of read-write-modify operators
2929
2930         Implement cross scope optimisation for read-write-modify
2931         operators, to avoid unnecessary calls to property resolve
2932         helper functions.
2933
2934         * bytecompiler/BytecodeGenerator.cpp:
2935         (JSC::BytecodeGenerator::BytecodeGenerator):
2936         (JSC::BytecodeGenerator::emitLoadGlobalObject):
2937         (JSC::BytecodeGenerator::emitResolveWithBase):
2938         * bytecompiler/BytecodeGenerator.h:
2939
2940 2009-04-16  Oliver Hunt  <oliver@apple.com>
2941
2942         Reviewed by Gavin Barraclough.
2943
2944         Improve performance of remaining array enumeration functions
2945
2946         Make use of function entry cache for remaining Array enumeration functions.
2947
2948         * runtime/ArrayPrototype.cpp:
2949         (JSC::arrayProtoFuncMap):
2950         (JSC::arrayProtoFuncEvery):
2951         (JSC::arrayProtoFuncForEach):
2952         (JSC::arrayProtoFuncSome):
2953
2954 2009-04-15  Oliver Hunt  <oliver@apple.com>
2955
2956         Reviewed by Gavin Barraclough.
2957
2958         Improve performance of Array.sort
2959
2960         Cache the VM entry for Array.sort when using a JS comparison function.
2961
2962         * runtime/JSArray.cpp:
2963         (JSC::AVLTreeAbstractorForArrayCompare::compare_key_key):
2964         (JSC::JSArray::sort):
2965
2966 2009-04-15  Oliver Hunt  <oliver@apple.com>
2967
2968         Reviewed by Gavin Barraclough.
2969
2970         Bug 25229: Need support for Array.prototype.reduceRight
2971         <https://bugs.webkit.org/show_bug.cgi?id=25229>
2972
2973         Implement Array.reduceRight
2974
2975         * runtime/ArrayPrototype.cpp:
2976         (JSC::arrayProtoFuncReduceRight):
2977
2978 2009-04-15  Oliver Hunt  <oliver@apple.com>
2979
2980         Reviewed by Gavin Barraclough.
2981
2982         Bug 25227: Array.filter triggers an assertion when the target array shrinks while being filtered
2983         <https://bugs.webkit.org/show_bug.cgi?id=25227>
2984
2985         We correct this simply by making the fast array path fall back on the slow path if
2986         we ever discover the fast access is unsafe.
2987
2988         * runtime/ArrayPrototype.cpp:
2989         (JSC::arrayProtoFuncFilter):
2990
2991 2009-04-13  Oliver Hunt  <oliver@apple.com>
2992
2993         Reviewed by Gavin Barraclough.
2994
2995         Bug 25159: Support Array.prototype.reduce
2996         <https://bugs.webkit.org/show_bug.cgi?id=25159>
2997
2998         Implement Array.prototype.reduce
2999
3000         * runtime/ArrayPrototype.cpp:
3001         (JSC::arrayProtoFuncReduce):
3002
3003 2009-04-15  Oliver Hunt  <oliver@apple.com>
3004
3005         Reviewed by NOBODY (Build fix).
3006
3007         Move CallFrameClosure from inside the Interpreter class to its own file.
3008
3009         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3010         * JavaScriptCore.xcodeproj/project.pbxproj:
3011         * interpreter/CachedCall.h:
3012         * interpreter/CallFrameClosure.h: Copied from JavaScriptCore/yarr/RegexJIT.h.
3013         (JSC::CallFrameClosure::setArgument):
3014         (JSC::CallFrameClosure::resetCallFrame):
3015         * interpreter/Interpreter.cpp:
3016         (JSC::Interpreter::prepareForRepeatCall):
3017         * interpreter/Interpreter.h:
3018
3019 2009-04-14  Oliver Hunt  <oliver@apple.com>
3020
3021         Reviewed by Cameron Zwarich.
3022
3023         Bug 25202: Improve performance of repeated callbacks into the VM
3024
3025         Add the concept of a CachedCall to native code for use in Array
3026         prototype and similar functions where a single callback function
3027         is called repeatedly with the same number of arguments.
3028
3029         Used Array.prototype.filter as the test function and got a 50% win
3030         over a naive non-caching specialised version.  This makes the native
3031         implementation of Array.prototype.filter faster than the JS one once
3032         more.
3033
3034         * JavaScriptCore.vcproj/JavaScriptCore.sln:
3035         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3036         * JavaScriptCore.xcodeproj/project.pbxproj:
3037         * interpreter/CachedCall.h: Added.
3038         (JSC::CachedCall::CachedCall):
3039         (JSC::CachedCall::call):
3040         (JSC::CachedCall::setThis):
3041         (JSC::CachedCall::setArgument):
3042         (JSC::CachedCall::~CachedCall):
3043            CachedCall is a wrapper that automates the calling and teardown
3044            for a CallFrameClosure
3045         * interpreter/CallFrame.h:
3046         * interpreter/Interpreter.cpp:
3047         (JSC::Interpreter::prepareForRepeatCall):
3048            Create the basic entry closure for a function
3049         (JSC::Interpreter::execute):
3050            A new ::execute method to enter the interpreter from a closure
3051         (JSC::Interpreter::endRepeatCall):
3052            Clear the entry closure
3053         * interpreter/Interpreter.h:
3054         (JSC::Interpreter::CallFrameClosure::setArgument):
3055         (JSC::Interpreter::CallFrameClosure::resetCallFrame):
3056            Helper functions to simplify setting up the closure's callframe
3057         * runtime/ArrayPrototype.cpp:
3058         (JSC::arrayProtoFuncFilter):
3059
3060 2009-04-14  Xan Lopez  <xlopez@igalia.com>
3061
3062         Fix the build.
3063
3064         Add the yarr headers (and only the headers) to the build, so that
3065         RegExp.cpp can compile. The headers are ifdefed out with yarr
3066         disabled, so we don't need anything else for now.
3067
3068         * GNUmakefile.am:
3069
3070 2009-04-14  Adam Roben  <aroben@apple.com>
3071
3072         Remove support for profile-guided optimization on Windows
3073
3074         Rubber-stamped by Steve Falkenburg.
3075
3076         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Removed
3077         the Release_PGO configuration. Also let VS re-order the source files
3078         list.
3079
3080 2009-04-14  Xan Lopez  <xlopez@igalia.com>
3081
3082         Unreviewed build fix.
3083
3084         * GNUmakefile.am:
3085
3086 2009-04-14  Jan Michael Alonzo  <jmalonzo@webkit.org>
3087
3088         Gtk build fix when building minidom. Not reviewed.
3089
3090         Use C-style comment instead of C++ style since autotools builds
3091         minidom using gcc and not g++.
3092
3093         * wtf/Platform.h:
3094
3095 2009-04-14  Gavin Barraclough  <barraclough@apple.com>
3096
3097         Reviewed by NOBODY - speculative build fix.
3098
3099         * runtime/RegExp.h:
3100
3101 2009-04-13  Gavin Barraclough  <barraclough@apple.com>
3102
3103         Reviewed by Cap'n Geoff Garen.
3104
3105         Yarr!
3106         (Yet another regex runtime).
3107
3108         Currently disabled by default since the interpreter, whilst awesomely
3109         functional, has not been optimized and is likely slower than PCRE, and
3110         the JIT, whilst faster than WREC, is presently incomplete and does not
3111         fallback to using an interpreter for the cases it cannot handle.
3112
3113         * JavaScriptCore.xcodeproj/project.pbxproj:
3114         * assembler/MacroAssemblerX86Common.h:
3115         (JSC::MacroAssemblerX86Common::move):
3116         (JSC::MacroAssemblerX86Common::swap):
3117         (JSC::MacroAssemblerX86Common::signExtend32ToPtr):
3118         (JSC::MacroAssemblerX86Common::zeroExtend32ToPtr):
3119         (JSC::MacroAssemblerX86Common::branch32):
3120         (JSC::MacroAssemblerX86Common::branch16):
3121         * assembler/X86Assembler.h:
3122         (JSC::X86Assembler::cmpw_im):
3123         (JSC::X86Assembler::testw_rr):
3124         (JSC::X86Assembler::X86InstructionFormatter::immediate16):
3125         * runtime/RegExp.cpp:
3126         (JSC::RegExp::RegExp):
3127         (JSC::RegExp::~RegExp):
3128         (JSC::RegExp::create):
3129         (JSC::RegExp::compile):
3130         (JSC::RegExp::match):
3131         * runtime/RegExp.h:
3132         * wtf/Platform.h:
3133         * yarr: Added.
3134         * yarr/RegexCompiler.cpp: Added.
3135         (JSC::Yarr::CharacterClassConstructor::CharacterClassConstructor):
3136         (JSC::Yarr::CharacterClassConstructor::reset):
3137         (JSC::Yarr::CharacterClassConstructor::append):
3138         (JSC::Yarr::CharacterClassConstructor::putChar):
3139         (JSC::Yarr::CharacterClassConstructor::isUnicodeUpper):
3140         (JSC::Yarr::CharacterClassConstructor::isUnicodeLower):
3141         (JSC::Yarr::CharacterClassConstructor::putRange):
3142         (JSC::Yarr::CharacterClassConstructor::charClass):
3143         (JSC::Yarr::CharacterClassConstructor::addSorted):
3144         (JSC::Yarr::CharacterClassConstructor::addSortedRange):
3145         (JSC::Yarr::newlineCreate):
3146         (JSC::Yarr::digitsCreate):
3147         (JSC::Yarr::spacesCreate):
3148         (JSC::Yarr::wordcharCreate):
3149         (JSC::Yarr::nondigitsCreate):
3150         (JSC::Yarr::nonspacesCreate):
3151         (JSC::Yarr::nonwordcharCreate):
3152         (JSC::Yarr::RegexPatternConstructor::RegexPatternConstructor):
3153         (JSC::Yarr::RegexPatternConstructor::~RegexPatternConstructor):
3154         (JSC::Yarr::RegexPatternConstructor::reset):
3155         (JSC::Yarr::RegexPatternConstructor::assertionBOL):
3156         (JSC::Yarr::RegexPatternConstructor::assertionEOL):
3157         (JSC::Yarr::RegexPatternConstructor::assertionWordBoundary):
3158         (JSC::Yarr::RegexPatternConstructor::atomPatternCharacter):
3159         (JSC::Yarr::RegexPatternConstructor::atomBuiltInCharacterClass):
3160         (JSC::Yarr::RegexPatternConstructor::atomCharacterClassBegin):
3161         (JSC::Yarr::RegexPatternConstructor::atomCharacterClassAtom):
3162         (JSC::Yarr::RegexPatternConstructor::atomCharacterClassRange):
3163         (JSC::Yarr::RegexPatternConstructor::atomCharacterClassBuiltIn):
3164         (JSC::Yarr::RegexPatternConstructor::atomCharacterClassEnd):
3165         (JSC::Yarr::RegexPatternConstructor::atomParenthesesSubpatternBegin):
3166         (JSC::Yarr::RegexPatternConstructor::atomParentheticalAssertionBegin):
3167         (JSC::Yarr::RegexPatternConstructor::atomParenthesesEnd):
3168         (JSC::Yarr::RegexPatternConstructor::atomBackReference):
3169         (JSC::Yarr::RegexPatternConstructor::copyDisjunction):
3170         (JSC::Yarr::RegexPatternConstructor::copyTerm):
3171         (JSC::Yarr::RegexPatternConstructor::quantifyAtom):
3172         (JSC::Yarr::RegexPatternConstructor::disjunction):
3173         (JSC::Yarr::RegexPatternConstructor::regexBegin):
3174         (JSC::Yarr::RegexPatternConstructor::regexEnd):
3175         (JSC::Yarr::RegexPatternConstructor::regexError):
3176         (JSC::Yarr::RegexPatternConstructor::setupAlternativeOffsets):
3177         (JSC::Yarr::RegexPatternConstructor::setupDisjunctionOffsets):
3178         (JSC::Yarr::RegexPatternConstructor::setupOffsets):
3179         (JSC::Yarr::compileRegex):
3180         * yarr/RegexCompiler.h: Added.
3181         * yarr/RegexInterpreter.cpp: Added.
3182         (JSC::Yarr::Interpreter::appendParenthesesDisjunctionContext):
3183         (JSC::Yarr::Interpreter::popParenthesesDisjunctionContext):
3184         (JSC::Yarr::Interpreter::DisjunctionContext::DisjunctionContext):
3185         (JSC::Yarr::Interpreter::DisjunctionContext::operator new):
3186         (JSC::Yarr::Interpreter::allocDisjunctionContext):
3187         (JSC::Yarr::Interpreter::freeDisjunctionContext):
3188         (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::ParenthesesDisjunctionContext):
3189         (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::operator new):
3190         (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::restoreOutput):
3191         (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::getDisjunctionContext):
3192         (JSC::Yarr::Interpreter::allocParenthesesDisjunctionContext):
3193         (JSC::Yarr::Interpreter::freeParenthesesDisjunctionContext):
3194         (JSC::Yarr::Interpreter::InputStream::InputStream):
3195         (JSC::Yarr::Interpreter::InputStream::next):
3196         (JSC::Yarr::Interpreter::InputStream::rewind):
3197         (JSC::Yarr::Interpreter::InputStream::read):
3198         (JSC::Yarr::Interpreter::InputStream::readChecked):
3199         (JSC::Yarr::Interpreter::InputStream::reread):
3200         (JSC::Yarr::Interpreter::InputStream::prev):
3201         (JSC::Yarr::Interpreter::InputStream::getPos):
3202         (JSC::Yarr::Interpreter::InputStream::setPos):
3203         (JSC::Yarr::Interpreter::InputStream::atStart):
3204         (JSC::Yarr::Interpreter::InputStream::atEnd):
3205         (JSC::Yarr::Interpreter::InputStream::checkInput):
3206         (JSC::Yarr::Interpreter::InputStream::uncheckInput):
3207         (JSC::Yarr::Interpreter::testCharacterClass):
3208         (JSC::Yarr::Interpreter::tryConsumeCharacter):
3209         (JSC::Yarr::Interpreter::checkCharacter):
3210         (JSC::Yarr::Interpreter::tryConsumeCharacterClass):
3211         (JSC::Yarr::Interpreter::checkCharacterClass):
3212         (JSC::Yarr::Interpreter::tryConsumeBackReference):
3213         (JSC::Yarr::Interpreter::matchAssertionBOL):
3214         (JSC::Yarr::Interpreter::matchAssertionEOL):
3215         (JSC::Yarr::Interpreter::matchAssertionWordBoundary):
3216         (JSC::Yarr::Interpreter::matchPatternCharacter):
3217         (JSC::Yarr::Interpreter::backtrackPatternCharacter):
3218         (JSC::Yarr::Interpreter::matchCharacterClass):
3219         (JSC::Yarr::Interpreter::backtrackCharacterClass):
3220         (JSC::Yarr::Interpreter::matchBackReference):
3221         (JSC::Yarr::Interpreter::backtrackBackReference):
3222         (JSC::Yarr::Interpreter::recordParenthesesMatch):
3223         (JSC::Yarr::Interpreter::resetMatches):
3224         (JSC::Yarr::Interpreter::resetAssertionMatches):
3225         (JSC::Yarr::Interpreter::parenthesesDoBacktrack):
3226         (JSC::Yarr::Interpreter::matchParenthesesOnceBegin):
3227         (JSC::Yarr::Interpreter::matchParenthesesOnceEnd):
3228         (JSC::Yarr::Interpreter::backtrackParenthesesOnceBegin):
3229         (JSC::Yarr::Interpreter::backtrackParenthesesOnceEnd):
3230         (JSC::Yarr::Interpreter::matchParentheticalAssertionOnceBegin):
3231         (JSC::Yarr::Interpreter::matchParentheticalAssertionOnceEnd):
3232         (JSC::Yarr::Interpreter::backtrackParentheticalAssertionOnceBegin):
3233         (JSC::Yarr::Interpreter::backtrackParentheticalAssertionOnceEnd):
3234         (JSC::Yarr::Interpreter::matchParentheses):
3235         (JSC::Yarr::Interpreter::backtrackParentheses):
3236         (JSC::Yarr::Interpreter::matchTerm):
3237         (JSC::Yarr::Interpreter::backtrackTerm):
3238         (JSC::Yarr::Interpreter::matchAlternative):
3239         (JSC::Yarr::Interpreter::matchDisjunction):
3240         (JSC::Yarr::Interpreter::matchNonZeroDisjunction):
3241         (JSC::Yarr::Interpreter::interpret):
3242         (JSC::Yarr::Interpreter::Interpreter):
3243         (JSC::Yarr::ByteCompiler::ParenthesesStackEntry::ParenthesesStackEntry):
3244         (JSC::Yarr::ByteCompiler::ByteCompiler):
3245         (JSC::Yarr::ByteCompiler::compile):
3246         (JSC::Yarr::ByteCompiler::checkInput):
3247         (JSC::Yarr::ByteCompiler::assertionBOL):
3248         (JSC::Yarr::ByteCompiler::assertionEOL):
3249         (JSC::Yarr::ByteCompiler::assertionWordBoundary):
3250         (JSC::Yarr::ByteCompiler::atomPatternCharacter):
3251         (JSC::Yarr::ByteCompiler::atomCharacterClass):
3252         (JSC::Yarr::ByteCompiler::atomBackReference):
3253         (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternBegin):
3254         (JSC::Yarr::ByteCompiler::atomParentheticalAssertionBegin):
3255         (JSC::Yarr::ByteCompiler::popParenthesesStack):
3256         (JSC::Yarr::ByteCompiler::dumpDisjunction):
3257         (JSC::Yarr::ByteCompiler::closeAlternative):
3258         (JSC::Yarr::ByteCompiler::atomParenthesesEnd):
3259         (JSC::Yarr::ByteCompiler::regexBegin):
3260         (JSC::Yarr::ByteCompiler::regexEnd):
3261         (JSC::Yarr::ByteCompiler::alterantiveDisjunction):
3262         (JSC::Yarr::ByteCompiler::emitDisjunction):
3263         (JSC::Yarr::byteCompileRegex):
3264         (JSC::Yarr::interpretRegex):
3265         * yarr/RegexInterpreter.h: Added.
3266         (JSC::Yarr::ByteTerm::):
3267         (JSC::Yarr::ByteTerm::ByteTerm):
3268         (JSC::Yarr::ByteTerm::BOL):
3269         (JSC::Yarr::ByteTerm::CheckInput):
3270         (JSC::Yarr::ByteTerm::EOL):
3271         (JSC::Yarr::ByteTerm::WordBoundary):
3272         (JSC::Yarr::ByteTerm::BackReference):
3273         (JSC::Yarr::ByteTerm::AlternativeBegin):
3274         (JSC::Yarr::ByteTerm::AlternativeDisjunction):
3275         (JSC::Yarr::ByteTerm::AlternativeEnd):
3276         (JSC::Yarr::ByteTerm::PatternEnd):
3277         (JSC::Yarr::ByteTerm::invert):
3278         (JSC::Yarr::ByteTerm::capture):
3279         (JSC::Yarr::ByteDisjunction::ByteDisjunction):
3280         (JSC::Yarr::BytecodePattern::BytecodePattern):
3281         (JSC::Yarr::BytecodePattern::~BytecodePattern):
3282         * yarr/RegexJIT.cpp: Added.
3283         (JSC::Yarr::RegexGenerator::optimizeAlternative):
3284         (JSC::Yarr::RegexGenerator::matchCharacterClassRange):
3285         (JSC::Yarr::RegexGenerator::matchCharacterClass):
3286         (JSC::Yarr::RegexGenerator::jumpIfNoAvailableInput):
3287         (JSC::Yarr::RegexGenerator::jumpIfAvailableInput):
3288         (JSC::Yarr::RegexGenerator::checkInput):
3289         (JSC::Yarr::RegexGenerator::atEndOfInput):
3290         (JSC::Yarr::RegexGenerator::notAtEndOfInput):
3291         (JSC::Yarr::RegexGenerator::jumpIfCharEquals):
3292         (JSC::Yarr::RegexGenerator::jumpIfCharNotEquals):
3293         (JSC::Yarr::RegexGenerator::readCharacter):
3294         (JSC::Yarr::RegexGenerator::storeToFrame):
3295         (JSC::Yarr::RegexGenerator::loadFromFrame):
3296         (JSC::Yarr::RegexGenerator::TermGenerationState::TermGenerationState):
3297         (JSC::Yarr::RegexGenerator::TermGenerationState::resetAlternative):
3298         (JSC::Yarr::RegexGenerator::TermGenerationState::alternativeValid):
3299         (JSC::Yarr::RegexGenerator::TermGenerationState::nextAlternative):
3300         (JSC::Yarr::RegexGenerator::TermGenerationState::alternative):
3301         (JSC::Yarr::RegexGenerator::TermGenerationState::resetTerm):
3302         (JSC::Yarr::RegexGenerator::TermGenerationState::termValid):
3303         (JSC::Yarr::RegexGenerator::TermGenerationState::nextTerm):
3304         (JSC::Yarr::RegexGenerator::TermGenerationState::term):
3305         (JSC::Yarr::RegexGenerator::TermGenerationState::lookaheadTerm):
3306         (JSC::Yarr::RegexGenerator::TermGenerationState::isSinglePatternCharacterLookaheadTerm):
3307         (JSC::Yarr::RegexGenerator::TermGenerationState::inputOffset):
3308         (JSC::Yarr::RegexGenerator::TermGenerationState::jumpToBacktrack):
3309         (JSC::Yarr::RegexGenerator::TermGenerationState::setBacktrackGenerated):
3310         (JSC::Yarr::RegexGenerator::jumpToBacktrackCheckEmitPending):
3311         (JSC::Yarr::RegexGenerator::genertateAssertionBOL):
3312         (JSC::Yarr::RegexGenerator::genertateAssertionEOL):
3313         (JSC::Yarr::RegexGenerator::matchAssertionWordchar):
3314         (JSC::Yarr::RegexGenerator::genertateAssertionWordBoundary):
3315         (JSC::Yarr::RegexGenerator::genertatePatternCharacterSingle):
3316         (JSC::Yarr::RegexGenerator::genertatePatternCharacterPair):
3317         (JSC::Yarr::RegexGenerator::genertatePatternCharacterFixed):
3318         (JSC::Yarr::RegexGenerator::genertatePatternCharacterGreedy):
3319         (JSC::Yarr::RegexGenerator::genertatePatternCharacterNonGreedy):
3320         (JSC::Yarr::RegexGenerator::genertateCharacterClassSingle):
3321         (JSC::Yarr::RegexGenerator::genertateCharacterClassFixed):
3322         (JSC::Yarr::RegexGenerator::genertateCharacterClassGreedy):
3323         (JSC::Yarr::RegexGenerator::genertateCharacterClassNonGreedy):
3324         (JSC::Yarr::RegexGenerator::generateParenthesesSingleDisjunctionOneAlternative):
3325         (JSC::Yarr::RegexGenerator::generateParenthesesSingle):
3326         (JSC::Yarr::RegexGenerator::generateTerm):
3327         (JSC::Yarr::RegexGenerator::generateDisjunction):
3328         (JSC::Yarr::RegexGenerator::RegexGenerator):
3329         (JSC::Yarr::RegexGenerator::generate):
3330         (JSC::Yarr::jitCompileRegex):
3331         (JSC::Yarr::executeRegex):
3332         * yarr/RegexJIT.h: Added.
3333         (JSC::Yarr::RegexCodeBlock::RegexCodeBlock):
3334         * yarr/RegexParser.h: Added.
3335         (JSC::Yarr::):
3336         (JSC::Yarr::Parser::):
3337         (JSC::Yarr::Parser::CharacterClassParserDelegate::CharacterClassParserDelegate):
3338         (JSC::Yarr::Parser::CharacterClassParserDelegate::begin):
3339         (JSC::Yarr::Parser::CharacterClassParserDelegate::atomPatternCharacterUnescaped):
3340         (JSC::Yarr::Parser::CharacterClassParserDelegate::atomPatternCharacter):
3341         (JSC::Yarr::Parser::CharacterClassParserDelegate::atomBuiltInCharacterClass):
3342         (JSC::Yarr::Parser::CharacterClassParserDelegate::end):
3343         (JSC::Yarr::Parser::CharacterClassParserDelegate::assertionWordBoundary):
3344         (JSC::Yarr::Parser::CharacterClassParserDelegate::atomBackReference):
3345         (JSC::Yarr::Parser::CharacterClassParserDelegate::flush):
3346         (JSC::Yarr::Parser::CharacterClassParserDelegate::):
3347         (JSC::Yarr::Parser::Parser):
3348         (JSC::Yarr::Parser::parseEscape):
3349         (JSC::Yarr::Parser::parseAtomEscape):
3350         (JSC::Yarr::Parser::parseCharacterClassEscape):
3351         (JSC::Yarr::Parser::parseCharacterClass):
3352         (JSC::Yarr::Parser::parseParenthesesBegin):
3353         (JSC::Yarr::Parser::parseParenthesesEnd):
3354         (JSC::Yarr::Parser::parseQuantifier):
3355         (JSC::Yarr::Parser::parseTokens):
3356         (JSC::Yarr::Parser::parse):
3357         (JSC::Yarr::Parser::saveState):
3358         (JSC::Yarr::Parser::restoreState):
3359         (JSC::Yarr::Parser::atEndOfPattern):
3360         (JSC::Yarr::Parser::peek):
3361         (JSC::Yarr::Parser::peekIsDigit):
3362         (JSC::Yarr::Parser::peekDigit):
3363         (JSC::Yarr::Parser::consume):
3364         (JSC::Yarr::Parser::consumeDigit):
3365         (JSC::Yarr::Parser::consumeNumber):
3366         (JSC::Yarr::Parser::consumeOctal):
3367         (JSC::Yarr::Parser::tryConsume):
3368         (JSC::Yarr::Parser::tryConsumeHex):
3369         (JSC::Yarr::parse):
3370         * yarr/RegexPattern.h: Added.
3371         (JSC::Yarr::CharacterRange::CharacterRange):
3372         (JSC::Yarr::):
3373         (JSC::Yarr::PatternTerm::):
3374         (JSC::Yarr::PatternTerm::PatternTerm):
3375         (JSC::Yarr::PatternTerm::BOL):
3376         (JSC::Yarr::PatternTerm::EOL):
3377         (JSC::Yarr::PatternTerm::WordBoundary):
3378         (JSC::Yarr::PatternTerm::invert):
3379         (JSC::Yarr::PatternTerm::capture):
3380         (JSC::Yarr::PatternTerm::quantify):
3381         (JSC::Yarr::PatternAlternative::PatternAlternative):
3382         (JSC::Yarr::PatternAlternative::lastTerm):
3383         (JSC::Yarr::PatternAlternative::removeLastTerm):
3384         (JSC::Yarr::PatternDisjunction::PatternDisjunction):
3385         (JSC::Yarr::PatternDisjunction::~PatternDisjunction):
3386         (JSC::Yarr::PatternDisjunction::addNewAlternative):
3387         (JSC::Yarr::RegexPattern::RegexPattern):
3388         (JSC::Yarr::RegexPattern::~RegexPattern):
3389         (JSC::Yarr::RegexPattern::reset):
3390         (JSC::Yarr::RegexPattern::containsIllegalBackReference):
3391         (JSC::Yarr::RegexPattern::newlineCharacterClass):
3392         (JSC::Yarr::RegexPattern::digitsCharacterClass):
3393         (JSC::Yarr::RegexPattern::spacesCharacterClass):
3394         (JSC::Yarr::RegexPattern::wordcharCharacterClass):
3395         (JSC::Yarr::RegexPattern::nondigitsCharacterClass):
3396         (JSC::Yarr::RegexPattern::nonspacesCharacterClass):
3397         (JSC::Yarr::RegexPattern::nonwordcharCharacterClass):
3398
3399 2009-04-13  Oliver Hunt  <oliver@apple.com>
3400
3401         Reviewed by NOBODY (Missed code from last patch).
3402
3403         * runtime/InternalFunction.cpp:
3404         (JSC::InternalFunction::displayName):
3405         (JSC::InternalFunction::calculatedDisplayName):
3406         * runtime/InternalFunction.h:
3407
3408 2009-04-13  Francisco Tolmasky  <francisco@280north.com>
3409
3410         Reviewed by Oliver Hunt.
3411         
3412         BUG 25171: It should be possible to manually set the name of an anonymous function
3413         <https://bugs.webkit.org/show_bug.cgi?id=25171>
3414
3415         This change adds the displayName property to functions, which when set overrides the 
3416         normal name when appearing in the console.
3417
3418         * profiler/Profiler.cpp:
3419         (JSC::createCallIdentifierFromFunctionImp): Changed call to InternalFunction::name to InternalFunction::calculatedDisplayName
3420         * runtime/CommonIdentifiers.h: Added displayName common identifier.
3421         * runtime/InternalFunction.cpp:
3422         (JSC::InternalFunction::displayName): Access to user settable displayName property
3423         (JSC::InternalFunction::calculatedDisplayName): Returns displayName if it exists, if not then the natural name
3424
3425 2009-04-13  Geoffrey Garen  <ggaren@apple.com>
3426
3427         Reviewed by Sam Weinig.
3428
3429         Disabled another JavaScriptCore test because it fails on Windows but
3430         not Mac, so it makes the bots red.
3431
3432         * tests/mozilla/expected.html:
3433
3434 2009-04-13  Geoffrey Garen  <ggaren@apple.com>
3435
3436         Reviewed by Sam Weinig.
3437         
3438         Disabled two JavaScriptCore tests because they fail on Window or Mac but
3439         not both, so they make the bots red.
3440
3441         * tests/mozilla/expected.html: Updated expected results.
3442
3443 2009-04-09  Ben Murdoch  <benm@google.com>
3444
3445         Reviewed by Alexey Proskuryakov.
3446
3447         https://bugs.webkit.org/show_bug.cgi?id=25091
3448         The Android platform requires threads to be registered with the VM.
3449         This patch implements this behaviour inside ThreadingPthreads.cpp.
3450
3451         * wtf/ThreadingPthreads.cpp: Add a level above threadEntryPoint that takes care of (un)registering threads with the VM.
3452         (WTF::runThreadWithRegistration): register the thread and run entryPoint. Unregister the thread afterwards.
3453         (WTF::createThreadInternal): call runThreadWithRegistration instead of entryPoint directly.
3454
3455 2009-04-09  David Kilzer  <ddkilzer@apple.com>
3456
3457         Reinstating <rdar://problem/6718589> Option to turn off SVG DOM Objective-C bindings
3458
3459         Rolled r42345 back in.  The build failure was caused by an
3460         internal script which had not been updated the same way that
3461         build-webkit was updated.
3462
3463         * Configurations/JavaScriptCore.xcconfig:
3464
3465 2009-04-09  Alexey Proskuryakov  <ap@webkit.org>
3466
3467         Reverting <rdar://problem/6718589> Option to turn off SVG DOM Objective-C bindings.
3468         It broke Mac build, and I don't know how to fix it.
3469
3470         * Configurations/JavaScriptCore.xcconfig:
3471
3472 2009-04-09  Xan Lopez  <xlopez@igalia.com>
3473
3474         Unreviewed build fix.
3475
3476         Checking for __GLIBCXX__ being bigger than some date is not enough
3477         to get std::tr1, C++0x has to be in use too. Add another check for
3478         __GXX_EXPERIMENTAL_CXX0X__.
3479
3480         * wtf/TypeTraits.h:
3481
3482 2009-04-08  Oliver Hunt  <oliver@apple.com>
3483
3484         Reviewed by Adam Roben.
3485
3486         Fix assertion failure in function.apply
3487
3488         The result of excess arguments to function.apply is irrelevant
3489         so we don't need to provide a result register.  We were providing
3490         temporary result register but not ref'ing it resulting in an
3491         assertion failure.
3492
3493         * parser/Nodes.cpp:
3494         (JSC::ApplyFunctionCallDotNode::emitBytecode):
3495
3496 2009-04-08  David Kilzer  <ddkilzer@apple.com>
3497
3498         <rdar://problem/6718589> Option to turn off SVG DOM Objective-C bindings
3499
3500         Reviewed by Darin Adler and Maciej Stachowiak.
3501
3502         Introduce the ENABLE_SVG_DOM_OBJC_BINDINGS feature define so
3503         that SVG DOM Objective-C bindings may be optionally disabled.
3504
3505         * Configurations/JavaScriptCore.xcconfig: Added
3506         ENABLE_SVG_DOM_OBJC_BINDINGS variable and use it in
3507         FEATURE_DEFINES.
3508
3509 2009-04-08  Paul Pedriana <ppedriana@ea.com>
3510
3511         Reviewed by Darin Adler.
3512
3513         https://bugs.webkit.org/show_bug.cgi?id=20422
3514         Allow custom memory allocation control.
3515         
3516         * wtf/FastAllocBase.h:
3517         New added file. Implements allocation base class.
3518         * wtf/TypeTraits.h:
3519         Augments existing type traits support as needed by FastAllocBase.
3520         * wtf/FastMalloc.h:
3521         Changed to support FastMalloc match validation.
3522         * wtf/FastMalloc.cpp:
3523         Changed to support FastMalloc match validation.
3524         * wtf/Platform.h:
3525         Added ENABLE_FAST_MALLOC_MATCH_VALIDATION; defaults to 0.
3526         * GNUmakefile.am:
3527         Updated to include added FastAllocBase.h.
3528         * JavaScriptCore.xcodeproj/project.pbxproj:
3529         Updated to include added FastAllocBase.h.
3530         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
3531         Updated to include added FastAllocBase.h.
3532
3533 2009-04-07  Oliver Hunt  <oliver@apple.com>
3534
3535         Reviewed by Geoff Garen.
3536
3537         Improve function.apply performance
3538
3539         Jump through a few hoops to improve performance of function.apply in the general case.
3540
3541         In the case of zero or one arguments, or if there are only two arguments and the
3542         second is an array literal we treat function.apply as function.call.
3543
3544         Otherwise we use the new opcodes op_load_varargs and op_call_varargs to do the .apply call
3545         without re-entering the virtual machine.
3546
3547         * bytecode/CodeBlock.cpp:
3548         (JSC::CodeBlock::dump):
3549         * bytecode/Opcode.h:
3550         * bytecompiler/BytecodeGenerator.cpp:
3551         (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply):
3552         (JSC::BytecodeGenerator::emitLoadVarargs):
3553         (JSC::BytecodeGenerator::emitCallVarargs):
3554         * bytecompiler/BytecodeGenerator.h:
3555         * interpreter/Interpreter.cpp:
3556         (JSC::Interpreter::privateExecute):
3557         * jit/JIT.cpp:
3558         (JSC::JIT::privateCompileMainPass):
3559         (JSC::JIT::privateCompileSlowCases):
3560         * jit/JIT.h:
3561         * jit/JITCall.cpp:
3562         (JSC::JIT::compileOpCallSetupArgs):
3563         (JSC::JIT::compileOpCallVarargsSetupArgs):
3564         (JSC::JIT::compileOpCallVarargs):
3565         (JSC::JIT::compileOpCallVarargsSlowCase):
3566         * jit/JITStubs.cpp:
3567         (JSC::JITStubs::cti_op_load_varargs):
3568         * jit/JITStubs.h:
3569         * parser/Grammar.y:
3570         * parser/Nodes.cpp:
3571         (JSC::ArrayNode::isSimpleArray):
3572         (JSC::ArrayNode::toArgumentList):
3573         (JSC::CallFunctionCallDotNode::emitBytecode):
3574         (JSC::ApplyFunctionCallDotNode::emitBytecode):
3575         * parser/Nodes.h:
3576         (JSC::ExpressionNode::):
3577         (JSC::ApplyFunctionCallDotNode::):
3578         * runtime/Arguments.cpp:
3579         (JSC::Arguments::copyToRegisters):
3580         (JSC::Arguments::fillArgList):
3581         * runtime/Arguments.h:
3582         (JSC::Arguments::numProvidedArguments):
3583         * runtime/FunctionPrototype.cpp:
3584         (JSC::FunctionPrototype::addFunctionProperties):
3585         * runtime/FunctionPrototype.h:
3586         * runtime/JSArray.cpp:
3587         (JSC::JSArray::copyToRegisters):
3588         * runtime/JSArray.h:
3589         * runtime/JSGlobalObject.cpp:
3590         (JSC::JSGlobalObject::reset):
3591         (JSC::JSGlobalObject::mark):
3592         * runtime/JSGlobalObject.h:
3593
3594 2009-04-08  Alexey Proskuryakov  <ap@webkit.org>
3595
3596         Reviewed by Darin Adler.
3597
3598         https://bugs.webkit.org/show_bug.cgi?id=25073
3599         JavaScriptCore tests don't run if time zone is not PST
3600
3601         * API/tests/testapi.c:
3602         (timeZoneIsPST): Added a function that checks whether the time zone is PST, using the same
3603         method as functions in DateMath.cpp do for formatting the result.
3604         (main): Skip date string format test if the time zone is not PST.
3605
3606 2009-04-07  David Levin  <levin@chromium.org>
3607
3608         Reviewed by Sam Weinig and Geoff Garen.
3609
3610         https://bugs.webkit.org/show_bug.cgi?id=25039
3611         UString refactoring to support UChar* sharing.
3612
3613         No change in sunspider perf.
3614
3615         * runtime/SmallStrings.cpp:
3616         (JSC::SmallStringsStorage::SmallStringsStorage):
3617         * runtime/UString.cpp:
3618         (JSC::initializeStaticBaseString):
3619         (JSC::initializeUString):
3620         (JSC::UString::BaseString::isShared):
3621         Encapsulate the meaning behind the refcount == 1 checks because
3622         this needs to do slightly more when sharing is added.
3623         (JSC::concatenate):
3624         (JSC::UString::append):
3625         (JSC::UString::operator=):
3626         * runtime/UString.h: