1 2009-05-04 Maciej Stachowiak <mjs@apple.com>
3 Rubber stamped by Gavin.
5 - inline Vector::resize for a ~1.5% speedup on string-tagcloud
8 (WTF::Vector::resize): Inline
10 2009-05-03 Steve Falkenburg <sfalken@apple.com>
14 * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln:
16 2009-05-03 Mark Rowe <mrowe@apple.com>
23 * runtime/JSNumberCell.cpp:
24 (JSC::jsAPIMangledNumber):
25 * runtime/JSNumberCell.h:
27 2009-05-02 Sam Weinig <sam@webkit.org>
29 Roll JSC API number marshaling back in one last time (I hope).
31 2009-05-03 Sam Weinig <sam@webkit.org>
33 Roll JSC API number marshaling back out. It still breaks windows.
35 2009-05-03 Sam Weinig <sam@webkit.org>
37 Roll JSC API number marshaling back in.
39 2009-05-02 Darin Adler <darin@apple.com>
41 Reviewed by Maciej Stachowiak.
43 Bug 25519: streamline lexer by handling BOMs differently
44 https://bugs.webkit.org/show_bug.cgi?id=25519
46 Roughly 1% faster SunSpider.
48 * parser/Grammar.y: Tweak formatting a bit.
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
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
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.
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
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.
119 * runtime/JSGlobalObjectFunctions.cpp:
120 (JSC::globalFuncUnescape): Changed to use isASCIIHexDigit.
122 * wtf/ASCIICType.h: Added using statements to match the design of the
125 2009-05-02 Ada Chan <adachan@apple.com>
127 Fix windows build (when doing a clean build)
129 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
131 2009-05-02 Geoffrey Garen <ggaren@apple.com>
133 Reviewed by Sam Weinig.
135 Simplified null-ish JSValues.
137 Replaced calls to noValue() with calls to JSValue() (which is what
138 noValue() returned). Removed noValue().
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().
145 Removed "JSValue()" initialiazers, since default construction happens...
148 * API/JSCallbackObjectFunctions.h:
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):
165 (JSC::JIT::unlinkCall):
166 (JSC::JIT::compileOpCallInitializeCallFrame):
167 (JSC::JIT::compileOpCall):
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:
176 * runtime/Completion.cpp:
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):
188 (JSC::JSArray::sort):
189 (JSC::JSArray::compactForSorting):
190 * runtime/JSCell.cpp:
191 (JSC::JSCell::getJSNumber):
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:
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):
211 (JSC::JSValueHashTraits::constructDeletedValue):
212 (JSC::JSValueHashTraits::isDeletedValue):
213 (JSC::JSValue::JSValue):
214 * runtime/JSWrapperObject.h:
215 (JSC::JSWrapperObject::JSWrapperObject):
216 * runtime/Operations.h:
218 * runtime/PropertySlot.h:
219 (JSC::PropertySlot::clearBase):
220 (JSC::PropertySlot::clearValue):
222 2009-05-02 Maciej Stachowiak <mjs@apple.com>
224 Reviewed by Cameron Zwarich.
226 - speed up the lexer in various ways
228 ~2% command-line SunSpider speedup
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
238 (JSC::Lexer::makeIdentifier): force to be ALWAYS_INLINE
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)
243 2009-05-01 Steve Falkenburg <sfalken@apple.com>
247 * JavaScriptCore.vcproj/JavaScriptCore.make:
249 2009-05-01 Sam Weinig <sam@webkit.org>
253 * runtime/JSNumberCell.h:
254 (JSC::JSValue::JSValue):
258 2009-05-01 Sam Weinig <sam@webkit.org>
260 Roll out JavaScriptCore API number marshaling.
267 (JSCheckScriptSyntax):
268 * API/JSCallbackConstructor.cpp:
269 (JSC::constructJSCallback):
270 * API/JSCallbackFunction.cpp:
271 (JSC::JSCallbackFunction::call):
272 * API/JSCallbackObjectFunctions.h:
273 (JSC::::getOwnPropertySlot):
275 (JSC::::deleteProperty):
277 (JSC::::hasInstance):
281 (JSC::::staticValueGetter):
282 (JSC::::callbackGetter):
283 * API/JSObjectRef.cpp:
284 (JSObjectMakeFunction):
288 (JSObjectMakeRegExp):
289 (JSObjectGetPrototype):
290 (JSObjectSetPrototype):
291 (JSObjectGetProperty):
292 (JSObjectSetProperty):
293 (JSObjectGetPropertyAtIndex):
294 (JSObjectSetPropertyAtIndex):
295 (JSObjectDeleteProperty):
296 (JSObjectCallAsFunction):
297 (JSObjectCallAsConstructor):
298 * API/JSValueRef.cpp:
300 (JSValueIsUndefined):
306 (JSValueIsObjectOfClass):
308 (JSValueIsStrictEqual):
309 (JSValueIsInstanceOfConstructor):
310 (JSValueMakeUndefined):
312 (JSValueMakeBoolean):
317 (JSValueToStringCopy):
321 * JavaScriptCore.exp:
322 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
323 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
324 * runtime/JSNumberCell.cpp:
325 * runtime/JSNumberCell.h:
328 2009-05-01 Sam Weinig <sam@webkit.org>
332 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
333 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
335 2009-05-01 Sam Weinig <sam@webkit.org>
339 * JavaScriptCore.exp:
341 2009-05-01 Sam Weinig <sam@webkit.org>
343 Reviewed by Geoffrey "Too Far!" Garen.
345 Move JS number construction into JSValue.
347 * runtime/JSImmediate.h:
348 * runtime/JSNumberCell.h:
349 (JSC::JSValue::JSValue):
353 2009-05-01 Sam Weinig <sam@webkit.org>
355 Reviewed by Geoff "The Minneapolis" Garen.
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.
368 (JSCheckScriptSyntax):
369 * API/JSCallbackConstructor.cpp:
370 (JSC::constructJSCallback):
371 * API/JSCallbackFunction.cpp:
372 (JSC::JSCallbackFunction::call):
373 * API/JSCallbackObjectFunctions.h:
374 (JSC::::getOwnPropertySlot):
376 (JSC::::deleteProperty):
378 (JSC::::hasInstance):
382 (JSC::::staticValueGetter):
383 (JSC::::callbackGetter):
384 * API/JSObjectRef.cpp:
385 (JSObjectMakeFunction):
389 (JSObjectMakeRegExp):
390 (JSObjectGetPrototype):
391 (JSObjectSetPrototype):
392 (JSObjectGetProperty):
393 (JSObjectSetProperty):
394 (JSObjectGetPropertyAtIndex):
395 (JSObjectSetPropertyAtIndex):
396 (JSObjectDeleteProperty):
397 (JSObjectCallAsFunction):
398 (JSObjectCallAsConstructor):
399 * API/JSValueRef.cpp:
401 (JSValueIsUndefined):
407 (JSValueIsObjectOfClass):
409 (JSValueIsStrictEqual):
410 (JSValueIsInstanceOfConstructor):
411 (JSValueMakeUndefined):
413 (JSValueMakeBoolean):
418 (JSValueToStringCopy):
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):
431 2009-05-01 Geoffrey Garen <ggaren@apple.com>
433 Windows build fix take 6.
435 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
437 2009-05-01 Geoffrey Garen <ggaren@apple.com>
439 Windows build fix take 5.
441 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
443 2009-05-01 Geoffrey Garen <ggaren@apple.com>
445 Windows build fix take 4.
447 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
449 2009-05-01 Geoffrey Garen <ggaren@apple.com>
451 Windows build fix take 3.
453 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
455 2009-05-01 Geoffrey Garen <ggaren@apple.com>
457 Windows build fix take 2.
459 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
461 2009-05-01 Geoffrey Garen <ggaren@apple.com>
463 Windows build fix take 1.
465 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
466 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
468 2009-05-01 Geoffrey Garen <ggaren@apple.com>
470 Rubber Stamped by Sam Weinig.
472 Renamed JSValuePtr => JSValue.
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):
488 (JSC::::hasInstance):
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:
503 (JSValueIsUndefined):
509 (JSValueIsObjectOfClass):
511 (JSValueIsStrictEqual):
512 (JSValueIsInstanceOfConstructor):
515 (JSValueToStringCopy):
519 * JavaScriptCore.exp:
520 * bytecode/CodeBlock.cpp:
521 (JSC::valueToSourceString):
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):
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:
593 (JSC::Register::Register):
594 (JSC::Register::jsValue):
597 (JSC::JIT::privateCompileMainPass):
599 * jit/JITArithmetic.cpp:
600 (JSC::JIT::compileFastArith_op_mod):
602 (JSC::JIT::unlinkCall):
603 (JSC::JIT::compileOpCallInitializeCallFrame):
604 (JSC::JIT::compileOpCall):
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):
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):
709 (functionSetSamplingFlag):
710 (functionClearSamplingFlag):
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):
725 (JSC::MarkedArgumentBuffer::at):
726 (JSC::MarkedArgumentBuffer::append):
727 (JSC::ArgList::ArgList):
729 * runtime/Arguments.cpp:
730 (JSC::Arguments::put):
731 * runtime/Arguments.h:
732 (JSC::Arguments::createStructure):
734 * runtime/ArrayConstructor.cpp:
735 (JSC::callArrayConstructor):
736 * runtime/ArrayPrototype.cpp:
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:
771 * runtime/CallData.h:
772 * runtime/Collector.cpp:
773 (JSC::Heap::protect):
774 (JSC::Heap::unprotect):
776 * runtime/Collector.h:
777 * runtime/Completion.cpp:
779 * runtime/Completion.h:
780 (JSC::Completion::Completion):
781 (JSC::Completion::value):
782 (JSC::Completion::setValue):
783 * runtime/ConstructData.cpp:
785 * runtime/ConstructData.h:
786 * runtime/DateConstructor.cpp:
787 (JSC::constructDate):
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):
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):
883 * runtime/JSArray.cpp:
885 (JSC::JSArray::JSArray):
886 (JSC::JSArray::getOwnPropertySlot):
888 (JSC::JSArray::putSlowCase):
889 (JSC::JSArray::deleteProperty):
890 (JSC::JSArray::setLength):
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):
901 (JSC::JSArray::getIndex):
902 (JSC::JSArray::setIndex):
903 (JSC::JSArray::createStructure):
906 * runtime/JSByteArray.cpp:
907 (JSC::JSByteArray::createStructure):
908 (JSC::JSByteArray::put):
909 * runtime/JSByteArray.h:
910 (JSC::JSByteArray::getIndex):
911 (JSC::JSByteArray::setIndex):
913 (JSC::isJSByteArray):
914 * runtime/JSCell.cpp:
916 (JSC::JSCell::getJSNumber):
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):
953 * runtime/JSGlobalData.h:
954 * runtime/JSGlobalObject.cpp:
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:
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):
1067 (JSC::JSValue::isDoubleNumber):
1068 (JSC::JSValue::getDoubleNumber):
1069 (JSC::JSValue::isNumber):
1070 (JSC::JSValue::uncheckedGetNumber):
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):
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):
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):
1141 (JSC::jsImpossibleValue):
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):
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):
1239 (JSC::countPrototypeChainEntriesAndCheckForProxies):
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:
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=):
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):
1364 2009-05-01 Geoffrey Garen <ggaren@apple.com>
1366 Reviewed by Sam "That doesn't look like what I thought it looks like" Weinig.
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.
1372 SunSpider reports no change.
1374 * interpreter/Interpreter.cpp:
1375 (JSC::Interpreter::privateExecute):
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.
1383 * runtime/JSImmediate.h:
1384 (JSC::JSValuePtr::JSValuePtr):
1385 * runtime/JSValue.h:
1386 (JSC::JSValuePtr::):
1387 (JSC::jsImpossibleValue):
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
1402 * wtf/StdLibExtras.h:
1403 (WTF::bitwise_cast): Fixed up for clarity.
1405 2009-04-30 Gavin Barraclough <barraclough@apple.com>
1407 Reviewed by Geoff Garen.
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.
1414 * yarr/RegexCompiler.cpp:
1415 (JSC::Yarr::CharacterClassConstructor::putRange):
1417 2009-04-30 Gavin Barraclough <barraclough@apple.com>
1419 Reviewed by Oliver Hunt.
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).
1425 Restructure the checks so make this work again.
1427 * bytecode/SamplingTool.cpp:
1428 (JSC::SamplingTool::doRun):
1429 * bytecode/SamplingTool.h:
1430 (JSC::SamplingTool::Sample::isNull):
1432 2009-04-30 Maciej Stachowiak <mjs@apple.com>
1434 Reviewed by Gavin Barraclough.
1436 - Concatenate final three strings in simple replace case at one go
1438 ~0.2% SunSpider speedup
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:
1447 2009-04-30 Geoffrey Garen <ggaren@apple.com>
1449 Rubber Stamped by Gavin Barraclough.
1451 Changed JSValueEncodedAsPtr* => EncodedJSValuePtr to support a non-pointer
1452 encoding for JSValuePtrs.
1456 * bytecompiler/BytecodeGenerator.h:
1457 (JSC::BytecodeGenerator::JSValueHashTraits::constructDeletedValue):
1458 (JSC::BytecodeGenerator::JSValueHashTraits::isDeletedValue):
1459 * interpreter/Register.h:
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):
1524 * runtime/JSValue.h:
1525 (JSC::JSValuePtr::encode):
1526 (JSC::JSValuePtr::decode):
1528 2009-04-30 Gavin Barraclough <barraclough@apple.com>
1530 Reviewed by Oliver "Abandon Ship!" Hunt.
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.
1538 * yarr/RegexCompiler.cpp:
1539 (JSC::Yarr::RegexPatternConstructor::copyDisjunction):
1541 2009-04-30 Oliver Hunt <oliver@apple.com>
1543 Reviewed by Gavin Barraclough.
1545 Add function to CallFrame for dumping the current JS caller
1547 Added debug only method CallFrame::dumpCaller() that provide the call location
1548 of the deepest currently executing JS function.
1550 * interpreter/CallFrame.cpp:
1551 (JSC::CallFrame::dumpCaller):
1552 * interpreter/CallFrame.h:
1554 2009-04-30 Maciej Stachowiak <mjs@apple.com>
1556 Reviewed by Geoff Garen.
1558 - make BaseStrings have themselves as a base, instead of nothing, to remove common branches
1560 ~0.7% SunSpider speedup
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.
1566 2009-04-30 Gavin Barraclough <barraclough@apple.com>
1568 Reviewed by Oliver Hunt.
1570 Two quick improvements to SamplingFlags mechanism.
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.
1576 * bytecode/SamplingTool.cpp:
1577 (JSC::SamplingFlags::stop):
1578 * bytecode/SamplingTool.h:
1579 (JSC::SamplingFlags::ScopedFlag::ScopedFlag):
1580 (JSC::SamplingFlags::ScopedFlag::~ScopedFlag):
1582 2009-04-30 Adam Roben <aroben@apple.com>
1584 Restore build event steps that were truncated in r43082
1586 Rubber-stamped by Steve Falkenburg.
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
1594 * JavaScriptCore.vcproj/jsc/jsc.vcproj: Removed an unnecessary
1597 2009-04-30 Adam Roben <aroben@apple.com>
1599 Move settings from .vcproj files to .vsprops files within the
1600 JavaScriptCore directory
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.
1606 Reviewed by Steve Falkenburg.
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.
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.
1621 2009-04-30 Dimitri Glazkov <dglazkov@chromium.org>
1623 Reviewed by Timothy Hatcher.
1625 https://bugs.webkit.org/show_bug.cgi?id=25470
1626 Extend the cover of ENABLE_JAVASCRIPT_DEBUGGER to profiler.
1628 * Configurations/FeatureDefines.xcconfig: Added ENABLE_JAVASCRIPT_DEBUGGER define.
1630 2009-04-30 Maciej Stachowiak <mjs@apple.com>
1632 Reviewed by Alexey Proskuryakov.
1634 - speed up string concatenation by reorganizing some simple cases
1636 0.7% SunSpider speedup
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.
1643 2009-04-30 Gavin Barraclough <barraclough@apple.com>
1645 Reviewed by Maciej Stachowiak.
1647 Add SamplingFlags mechanism.
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
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.
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).
1664 Disabled by default; no performance impact.
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):
1684 (GlobalObject::GlobalObject):
1685 (functionSetSamplingFlag):
1686 (functionClearSamplingFlag):
1690 2009-04-29 Sam Weinig <sam@webkit.org>
1692 Another attempt to fix the windows build.
1694 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1695 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
1697 2009-04-29 Sam Weinig <sam@webkit.org>
1699 Try and fix the windows build.
1701 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1702 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
1704 2009-04-29 Gavin Barraclough <barraclough@apple.com>
1706 Reviewed by Oliver "Peg-Leg" Hunt.
1708 Coallesce input checking and reduce futzing with the index position
1709 between alternatives and iterations of the main loop of a regex,
1712 Consider the following regex: /foo|bar/
1714 Prior to this patch, this will be implemented something like this pseudo-code description:
1717 check_for_available_input(3) // this increments the index by 3, for the first alterantive.
1718 if (available) { test "foo" }
1720 check_for_available_input(3) // this increments the index by 3, for the second alterantive.
1721 if (available) { test "bar" }
1723 check_for_available_input(1) // can we loop again?
1724 if (available) { goto loop }
1726 With these changes it will look more like this:
1728 check_for_available_input(3) // this increments the index by 3, for the first alterantive.
1729 if (!available) { goto fail }
1733 check_for_available_input(1) // can we loop again?
1734 if (available) { goto loop }
1738 This gives about a 5% gain on v8-regex, no change on Sunspider.
1740 * yarr/RegexJIT.cpp:
1741 (JSC::Yarr::RegexGenerator::TermGenerationState::linkAlternativeBacktracksTo):
1742 (JSC::Yarr::RegexGenerator::generateDisjunction):
1744 2009-04-29 Oliver Hunt <oliver@apple.com>
1746 Reviewed by Gavin Barraclough.
1748 Clean up ArgList to be a trivial type
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.
1754 * API/JSObjectRef.cpp:
1755 (JSObjectMakeFunction):
1756 (JSObjectMakeArray):
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):
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):
1819 2009-04-29 Laszlo Gombos <laszlo.1.gombos@nokia.com>
1821 Reviewed by Sam Weinig.
1823 https://bugs.webkit.org/show_bug.cgi?id=25334
1825 Fix Qt build when ENABLE_JIT is explicitly set to 1
1826 to overrule defaults.
1828 * JavaScriptCore.pri:
1830 2009-04-29 Oliver Hunt <oliver@apple.com>
1832 Reviewed by Steve Falkenburg.
1834 Crash in profiler due to incorrect assuming displayName would be a string.
1836 Fixed by adding a type guard.
1838 * runtime/InternalFunction.cpp:
1839 (JSC::InternalFunction::displayName):
1841 2009-04-28 Geoffrey Garen <ggaren@apple.com>
1843 Rubber stamped by Beth Dakin.
1845 Removed scaffolding supporting dynamically converting between 32bit and
1846 64bit value representations.
1848 * API/JSCallbackConstructor.cpp:
1849 (JSC::constructJSCallback):
1850 * API/JSCallbackFunction.cpp:
1851 (JSC::JSCallbackFunction::call):
1852 * API/JSCallbackObjectFunctions.h:
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:
1871 (JSC::Register::Register):
1872 (JSC::Register::jsValue):
1873 (JSC::Register::marked):
1874 (JSC::Register::mark):
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):
1885 (JSC::JITStubs::cti_op_call_NotJSFunction):
1886 (JSC::JITStubs::cti_op_load_varargs):
1887 (JSC::JITStubs::cti_op_call_eval):
1893 * runtime/ArgList.h:
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):
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:
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):
2023 2009-04-28 David Kilzer <ddkilzer@apple.com>
2025 A little more hardening for UString
2027 Reviewed by Maciej Stachowiak.
2029 Revised fix for <rdar://problem/5861045> in r42644.
2031 * runtime/UString.cpp:
2032 (JSC::newCapacityWithOverflowCheck): Added.
2033 (JSC::concatenate): Used newCapacityWithOverflowCheck().
2034 (JSC::UString::append): Ditto.
2036 2009-04-28 Oliver Hunt <oliver@apple.com>
2038 Reviewed by Gavin Barraclough.
2040 Bring back r42969, this time with correct codegen
2042 Add logic to the codegen for right shift to avoid jumping to a helper function
2043 when shifting a small floating point value.
2045 * jit/JITArithmetic.cpp:
2047 (JSC::JIT::compileFastArith_op_rshift):
2048 (JSC::JIT::compileFastArithSlow_op_rshift):
2050 2009-04-28 Kevin Ollivier <kevino@theolliviers.com>
2052 wxMSW build fix. Switch JSCore build back to static.
2058 2009-04-28 Oliver Hunt <oliver@apple.com>
2060 Reviewed by NOBODY (Build fix).
2062 Roll out r42969, due to hangs in build bot.
2064 * jit/JITArithmetic.cpp:
2065 (JSC::JIT::compileFastArith_op_rshift):
2066 (JSC::JIT::compileFastArithSlow_op_rshift):
2067 (JSC::isSSE2Present):
2069 2009-04-28 Xan Lopez <xlopez@igalia.com>
2071 Unreviewed: fix distcheck build, add (even more) missing files to list.
2075 2009-04-28 Oliver Hunt <oliver@apple.com>
2077 Reviewed by Geoff Garen.
2079 Improve performance of string indexing
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.
2085 (JSC::JITStubs::cti_op_get_by_val):
2086 (JSC::JITStubs::cti_op_get_by_val_string):
2089 2009-04-28 Oliver Hunt <oliver@apple.com>
2091 Reviewed by Geoff Garen.
2093 Improve performance of right shifts of large or otherwise floating point values.
2095 Add logic to the codegen for right shift to avoid jumping to a helper function
2096 when shifting a small floating point value.
2098 * jit/JITArithmetic.cpp:
2099 (isSSE2Present): Moved to the head of file.
2100 (JSC::JIT::compileFastArith_op_rshift):
2101 (JSC::JIT::compileFastArithSlow_op_rshift):
2103 2009-04-28 Xan Lopez <xlopez@igalia.com>
2105 Unreviewed: fix distcheck build, add (more) missing files to list.
2109 2009-04-28 Xan Lopez <xlopez@igalia.com>
2111 Unreviewed: fix distcheck build, add missing header to file list.
2115 2009-04-28 Gavin Barraclough <barraclough@apple.com>
2117 Rubber stamped by Maciej "Henry Morgan" Stachowiak.
2124 2009-04-27 Gavin Barraclough <barraclough@apple.com>
2126 Reviewed by Maciej Stachowiak.
2128 Tweak a loop condition to keep GCC happy,
2129 some GCCs seem to be having issues with this. :-/
2131 * bytecompiler/BytecodeGenerator.cpp:
2132 (JSC::BytecodeGenerator::breakTarget):
2135 2009-04-27 Adam Roben <aroben@apple.com>
2137 Windows Debug build fix
2139 Not sure why the buildbots weren't affected by this problem.
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
2146 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
2147 Removed a function that no longer exists.
2149 2009-04-26 Gavin Barraclough <barraclough@apple.com>
2151 Reviewed by Weinig Sam.
2153 Fix for https://bugs.webkit.org/show_bug.cgi?id=25416
2154 "Cached prototype accesses unsafely hoist property storage load above structure checks."
2156 Do not hoist the load of the pointer to the property storage array.
2158 No performance impact.
2160 * jit/JITPropertyAccess.cpp:
2161 (JSC::JIT::privateCompileGetByIdProto):
2162 (JSC::JIT::privateCompileGetByIdProtoList):
2164 2009-04-26 Gavin Barraclough <barraclough@apple.com>
2166 Reviewed by Geoffrey "Gaffe or energy?" Garen.
2168 Randomize address requested by ExecutableAllocatorFixedVMPool.
2170 * jit/ExecutableAllocatorFixedVMPool.cpp:
2171 (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
2173 2009-04-26 Sam Weinig <sam@webkit.org>
2175 Reviewed by Eric Seidel.
2177 Remove scons-based build system.
2179 * JavaScriptCore.scons: Removed.
2181 2009-04-25 Oliver Hunt <oliver@apple.com>
2183 Reviewed by NOBODY (Buildfix).
2185 Make HAVE_MADV_FREE darwin only for now
2189 2009-04-25 Jan Michael Alonzo <jmalonzo@webkit.org>
2191 Reviewed by Oliver Hunt.
2193 Gtk build fix - check if we have MADV_FREE before using it.
2195 * interpreter/RegisterFile.cpp:
2196 (JSC::RegisterFile::releaseExcessCapacity):
2199 2009-04-24 Kevin Ollivier <kevino@theolliviers.com>
2201 wx build fix. Switching JSCore from a static lib to a dynamic lib
2202 to match the Apple build and fix symbol exports.
2206 2009-04-24 Laszlo Gombos <laszlo.1.gombos@nokia.com>
2208 Rubber-stamped by Mark Rowe.
2210 https://bugs.webkit.org/show_bug.cgi?id=25337
2211 Move ThreadingQt.cpp under the qt directory.
2213 * JavaScriptCore.pri:
2214 * wtf/ThreadingQt.cpp: Removed.
2215 * wtf/qt/ThreadingQt.cpp: Copied from JavaScriptCore/wtf/ThreadingQt.cpp.
2217 2009-04-24 Laszlo Gombos <laszlo.1.gombos@nokia.com>
2219 Rubber-stamped by Mark Rowe.
2221 https://bugs.webkit.org/show_bug.cgi?id=25338
2222 Move ThreadingGtk.cpp under the gtk directory.
2225 * wtf/ThreadingGtk.cpp: Removed.
2226 * wtf/gtk/ThreadingGtk.cpp: Copied from JavaScriptCore/wtf/ThreadingGtk.cpp.
2228 2009-04-24 Gavin Barraclough <barraclough@apple.com>
2230 Reviewed by Sam "Wesley" Weinig.
2232 Improve performance to YARR interpreter.
2233 (From about 3x slower than PCRE on regex-dna to about 30% slower).
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:
2274 2009-04-24 Rob Raguet-Schofield <ragfield@gmail.com>
2276 Rubber-stamped by Mark Rowe.
2278 * wtf/CurrentTime.h: Fix a typo in a comment.
2280 2009-04-24 Oliver Hunt <oliver@apple.com>
2282 Reviewed by NOBODY (Build fix).
2284 Add reinterpret_cast
2286 * interpreter/RegisterFile.cpp:
2287 (JSC::RegisterFile::releaseExcessCapacity):
2289 2009-04-23 Oliver Hunt <oliver@apple.com>
2291 Reviewed by Geoff Garen.
2293 <rdar://problem/6050421> JavaScript register file should remap to release physical pages accumulated during deep recursion
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.
2300 * interpreter/RegisterFile.cpp:
2301 (JSC::RegisterFile::releaseExcessCapacity):
2302 * interpreter/RegisterFile.h:
2303 (JSC::RegisterFile::RegisterFile):
2304 (JSC::RegisterFile::shrink):
2305 (JSC::RegisterFile::grow):
2307 2009-04-23 Mark Rowe <mrowe@apple.com>
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.
2314 2009-04-23 Mark Rowe <mrowe@apple.com>
2316 More Windows build fixage.
2318 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2319 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
2321 2009-04-23 Mark Rowe <mrowe@apple.com>
2323 Attempt to fix the Windows build.
2325 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Remove a symbol that no longer exists.
2327 2009-04-23 Francisco Tolmasky <francisco@280north.com>
2329 BUG 24604: WebKit profiler reports incorrect total times
2330 <https://bugs.webkit.org/show_bug.cgi?id=24604>
2332 Reviewed by Timothy Hatcher and Kevin McCullough.
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):
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.
2351 2009-04-23 Gavin Barraclough <barraclough@apple.com>
2355 Speculative Windows build fix II.
2357 * yarr/RegexInterpreter.cpp:
2359 2009-04-23 Gavin Barraclough <barraclough@apple.com>
2363 Speculative Windows build fix.
2365 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2366 * runtime/RegExp.cpp:
2368 2009-04-23 Gavin Barraclough <barraclough@apple.com>
2370 Rubber stamped by salty sea dogs Sam & Geoff.
2372 Enable YARR_JIT by default (where supported), replacing WREC.
2376 2009-04-23 Gavin Barraclough <barraclough@apple.com>
2378 Reviewed by Geoff "Dread Pirate Roberts" Garen.
2380 Various small fixes to YARR JIT, in preparation for enabling it by default.
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 )".
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):
2415 2009-04-22 Mark Rowe <mrowe@apple.com>
2417 Rubber-stamped by Gavin Barraclough.
2419 Add the m_ prefix on FixedVMPoolAllocator's member variables, and fix typos in a few comments.
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):
2429 2009-04-22 Mark Rowe <mrowe@apple.com>
2431 Rubber-stamped by Gavin Barraclough.
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.
2437 * jit/ExecutableAllocatorFixedVMPool.cpp:
2438 (JSC::FixedVMPoolAllocator::release):
2439 (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
2440 (JSC::FixedVMPoolAllocator::alloc):
2441 (JSC::FixedVMPoolAllocator::free):
2442 (JSC::FixedVMPoolAllocator::isWithinVMPool):
2444 2009-04-22 Gavin Barraclough <barraclough@apple.com>
2446 Rubber stamped by Sam "Blackbeard" Weinig.
2448 Although pirates do spell the word 'generate' as 'genertate',
2449 webkit developers do not. Fixertate.
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):
2466 2009-04-22 Gavin Barraclough <barraclough@apple.com>
2468 Reviewed by Sam "Blackbeard" Weinig.
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.
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):
2517 (JSC::Yarr::RegexCodeBlock::RegexCodeBlock):
2518 (JSC::Yarr::RegexCodeBlock::~RegexCodeBlock):
2520 2009-04-22 Sam Weinig <sam@webkit.org>
2522 Rubber-stamped by Darin Adler.
2524 Fix for <rdar://problem/6816957>
2525 Turn off Geolocation by default
2527 * Configurations/FeatureDefines.xcconfig:
2529 2009-04-22 Oliver Hunt <oliver@apple.com>
2531 Reviewed by NOBODY (Buildfix).
2533 * interpreter/CachedCall.h:
2535 2009-04-21 Oliver Hunt <oliver@apple.com>
2537 Reviewed by NOBODY (Build fix).
2539 * runtime/StringPrototype.cpp:
2541 2009-04-21 Oliver Hunt <oliver@apple.com>
2543 Reviewed by Maciej Stachowiak.
2545 Improve String.replace performance slightly
2547 Apply our vm reentry caching logic to String.replace with global
2550 * runtime/StringPrototype.cpp:
2551 (JSC::stringProtoFuncReplace):
2553 2009-04-21 Geoffrey Garen <ggaren@apple.com>
2555 Reviewed by Cameron Zwarich and Oliver Hunt.
2557 Re-Fixed <rdar://problem/6406045> REGRESSION: Stack overflow on PowerPC on
2558 fast/workers/use-machine-stack.html (22531)
2560 SunSpider reports no change.
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
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.
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.
2581 2009-04-21 Geoffrey Garen <ggaren@apple.com>
2583 Rubber-stamped by Adam Roben.
2585 Disabled one more Mozilla JS test because it fails intermittently on Windows.
2586 (See https://bugs.webkit.org/show_bug.cgi?id=25160.)
2588 * tests/mozilla/expected.html:
2590 2009-04-21 Adam Roben <aroben@apple.com>
2592 Rename JavaScriptCore_debug.dll to JavaScriptCore.dll in the Debug
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).
2601 Part of Bug 25305: can't run safari or drt on windows
2602 <https://bugs.webkit.org/show_bug.cgi?id=25305>
2604 Reviewed by Steve Falkenburg and Sam Weinig.
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}.
2611 2009-04-21 Adam Roben <aroben@apple.com>
2613 Fix JavaScriptCore build on VC++ Express
2615 Reviewed by Steve Falkenburg and Sam Weinig.
2617 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Link
2618 explicitly against gdi32.lib and oleaut32.lib.
2620 2009-04-21 Geoffrey Garen <ggaren@apple.com>
2622 Reviewed by Mark Rowe.
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.
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.
2638 2009-04-20 Steve Falkenburg <sfalken@apple.com>
2640 More Windows build fixes.
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.
2648 2009-04-20 Steve Falkenburg <sfalken@apple.com>
2650 Separate JavaScriptCore.dll from WebKit.dll.
2651 Slight performance improvement or no change on benchmarks.
2653 Allows us to break a circular dependency between CFNetwork and WebKit on Windows,
2654 and simplifies standalone JavaScriptCore builds.
2656 Reviewed by Oliver Hunt.
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.
2668 2009-04-20 Sam Weinig <sam@webkit.org>
2670 Reviewed by Kevin McCullough.
2672 Always tag mmaped memory on darwin and clean up #defines
2673 now that they are a little bigger.
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):
2684 2009-04-20 Sam Weinig <sam@webkit.org>
2686 Rubber-stamped by Tim Hatcher.
2688 Add licenses for xcconfig files.
2690 * Configurations/Base.xcconfig:
2691 * Configurations/DebugRelease.xcconfig:
2692 * Configurations/FeatureDefines.xcconfig:
2693 * Configurations/JavaScriptCore.xcconfig:
2694 * Configurations/Version.xcconfig:
2696 2009-04-20 Ariya Hidayat <ariya.hidayat@nokia.com>
2698 Build fix for Qt port (after r42646). Not reviewed.
2700 * wtf/unicode/qt4/UnicodeQt4.h: Added U16_PREV.
2702 2009-04-19 Sam Weinig <sam@webkit.org>
2704 Reviewed by Darin Adler.
2706 Better fix for JSStringCreateWithCFString hardening.
2708 * API/JSStringRefCF.cpp:
2709 (JSStringCreateWithCFString):
2711 2009-04-19 Sam Weinig <sam@webkit.org>
2713 Reviewed by Dan Bernstein.
2715 Fix for <rdar://problem/5860954>
2716 Harden JSStringCreateWithCFString against malformed CFStringRefs.
2718 * API/JSStringRefCF.cpp:
2719 (JSStringCreateWithCFString):
2721 2009-04-19 David Kilzer <ddkilzer@apple.com>
2723 Make FEATURE_DEFINES completely dynamic
2725 Reviewed by Darin Adler.
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.
2731 * Configurations/FeatureDefines.xcconfig: Extract a variable
2732 from FEATURE_DEFINES for each feature setting.
2734 2009-04-18 Sam Weinig <sam@webkit.org>
2736 Reviewed by Dan Bernstein.
2738 Fix typo. s/VM_MEMORY_JAVASCRIPT_JIT_REGISTER_FILE/VM_MEMORY_JAVASCRIPT_CORE/
2740 * runtime/Collector.cpp:
2741 (JSC::allocateBlock): Fix bozo typo.
2743 2009-04-18 Sam Weinig <sam@webkit.org>
2745 Reviewed by Anders Carlsson.
2747 Fix for <rdar://problem/6801555> Tag JavaScript memory on SnowLeopard
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):
2758 2009-04-18 Drew Wilson <amw@apple.com>
2760 <rdar://problem/6781407> VisiblePosition.characterAfter should return UChar32
2762 Reviewed by Dan Bernstein.
2764 * wtf/unicode/icu/UnicodeIcu.h:
2765 (WTF::Unicode::hasLineBreakingPropertyComplexContextOrIdeographic): Added.
2767 2009-04-18 Sam Weinig <sam@webkit.org>
2769 Reviewed by Mark Rowe.
2771 Fix for <rdar://problem/5861045>
2772 A little bit of hardening for UString.
2774 * runtime/UString.cpp:
2776 (JSC::UString::append):
2778 2009-04-18 Sam Weinig <sam@webkit.org>
2780 Reviewed by Mark Rowe and Dan Bernstein.
2782 Fix for <rdar://problem/5861188>
2783 A little bit of hardening for Vector.
2786 (WTF::Vector<T, inlineCapacity>::append):
2787 (WTF::Vector<T, inlineCapacity>::insert):
2789 2009-04-17 Gavin Barraclough <barraclough@apple.com>
2791 Reviewed by Geoff Garen.
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.
2800 * JavaScriptCore.xcodeproj/project.pbxproj:
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.
2830 Add missing variable initialization.
2833 2009-04-17 Oliver Hunt <oliver@apple.com>
2835 Reviewed by Darin Adler.
2837 Fix bug where the VM reentry cache would not correctly unroll the cached callframe
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.
2843 * interpreter/CachedCall.h:
2844 (JSC::CachedCall::CachedCall):
2845 (JSC::CachedCall::call): add assertion to ensure we don't use a bad callframe
2847 2009-04-17 David Kilzer <ddkilzer@apple.com>
2849 Simplify FEATURE_DEFINES definition
2851 Reviewed by Darin Adler.
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.
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.
2865 2009-04-08 Mihnea Ovidenie <mihnea@adobe.com>
2867 Reviewed by Oliver Hunt.
2869 Bug 25027: JavaScript parseInt wrong on negative numbers
2870 <https://bugs.webkit.org/show_bug.cgi?id=25027>
2872 When dealing with negative numbers, parseInt should use ceil instead of floor.
2874 * runtime/JSGlobalObjectFunctions.cpp:
2875 (JSC::globalFuncParseInt):
2877 2009-04-16 Stephanie Lewis <slewis@apple.com>
2879 Reviewed by Oliver Hunt.
2881 <rdar://problem/6744652> 32-bit to 64-bit: Javascript hash tables double in size
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.
2885 * create_hash_table:
2886 * runtime/Lookup.cpp:
2887 (JSC::HashTable::createTable):
2888 (JSC::HashTable::deleteTable):
2890 (JSC::HashEntry::initialize):
2891 (JSC::HashEntry::next):
2892 (JSC::HashTable::entry):
2893 * runtime/Structure.cpp:
2894 (JSC::Structure::getEnumerableNamesFromClassInfoTable):
2896 2009-04-16 Oliver Hunt <oliver@apple.com>
2898 Reviewed by Gavin Barraclough.
2900 Fix subtle error in optimised VM reentry in Array.sort
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.
2907 * interpreter/CachedCall.h:
2908 (JSC::CachedCall::newCallFrame):
2909 * runtime/JSArray.cpp:
2910 (JSC::AVLTreeAbstractorForArrayCompare::compare_key_key):
2912 2009-04-16 Oliver Hunt <oliver@apple.com>
2914 Reviewed by Gavin Barraclough.
2916 Optimise op_resolve_base
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.
2921 * bytecompiler/BytecodeGenerator.cpp:
2922 (JSC::BytecodeGenerator::emitResolveBase):
2924 2009-04-16 Oliver Hunt <oliver@apple.com>
2926 Reviewed by Gavin Barraclough.
2928 Improve performance of read-write-modify operators
2930 Implement cross scope optimisation for read-write-modify
2931 operators, to avoid unnecessary calls to property resolve
2934 * bytecompiler/BytecodeGenerator.cpp:
2935 (JSC::BytecodeGenerator::BytecodeGenerator):
2936 (JSC::BytecodeGenerator::emitLoadGlobalObject):
2937 (JSC::BytecodeGenerator::emitResolveWithBase):
2938 * bytecompiler/BytecodeGenerator.h:
2940 2009-04-16 Oliver Hunt <oliver@apple.com>
2942 Reviewed by Gavin Barraclough.
2944 Improve performance of remaining array enumeration functions
2946 Make use of function entry cache for remaining Array enumeration functions.
2948 * runtime/ArrayPrototype.cpp:
2949 (JSC::arrayProtoFuncMap):
2950 (JSC::arrayProtoFuncEvery):
2951 (JSC::arrayProtoFuncForEach):
2952 (JSC::arrayProtoFuncSome):
2954 2009-04-15 Oliver Hunt <oliver@apple.com>
2956 Reviewed by Gavin Barraclough.
2958 Improve performance of Array.sort
2960 Cache the VM entry for Array.sort when using a JS comparison function.
2962 * runtime/JSArray.cpp:
2963 (JSC::AVLTreeAbstractorForArrayCompare::compare_key_key):
2964 (JSC::JSArray::sort):
2966 2009-04-15 Oliver Hunt <oliver@apple.com>
2968 Reviewed by Gavin Barraclough.
2970 Bug 25229: Need support for Array.prototype.reduceRight
2971 <https://bugs.webkit.org/show_bug.cgi?id=25229>
2973 Implement Array.reduceRight
2975 * runtime/ArrayPrototype.cpp:
2976 (JSC::arrayProtoFuncReduceRight):
2978 2009-04-15 Oliver Hunt <oliver@apple.com>
2980 Reviewed by Gavin Barraclough.
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>
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.
2988 * runtime/ArrayPrototype.cpp:
2989 (JSC::arrayProtoFuncFilter):
2991 2009-04-13 Oliver Hunt <oliver@apple.com>
2993 Reviewed by Gavin Barraclough.
2995 Bug 25159: Support Array.prototype.reduce
2996 <https://bugs.webkit.org/show_bug.cgi?id=25159>
2998 Implement Array.prototype.reduce
3000 * runtime/ArrayPrototype.cpp:
3001 (JSC::arrayProtoFuncReduce):
3003 2009-04-15 Oliver Hunt <oliver@apple.com>
3005 Reviewed by NOBODY (Build fix).
3007 Move CallFrameClosure from inside the Interpreter class to its own file.
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:
3019 2009-04-14 Oliver Hunt <oliver@apple.com>
3021 Reviewed by Cameron Zwarich.
3023 Bug 25202: Improve performance of repeated callbacks into the VM
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.
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
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):
3060 2009-04-14 Xan Lopez <xlopez@igalia.com>
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.
3070 2009-04-14 Adam Roben <aroben@apple.com>
3072 Remove support for profile-guided optimization on Windows
3074 Rubber-stamped by Steve Falkenburg.
3076 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Removed
3077 the Release_PGO configuration. Also let VS re-order the source files
3080 2009-04-14 Xan Lopez <xlopez@igalia.com>
3082 Unreviewed build fix.
3086 2009-04-14 Jan Michael Alonzo <jmalonzo@webkit.org>
3088 Gtk build fix when building minidom. Not reviewed.
3090 Use C-style comment instead of C++ style since autotools builds
3091 minidom using gcc and not g++.
3095 2009-04-14 Gavin Barraclough <barraclough@apple.com>
3097 Reviewed by NOBODY - speculative build fix.
3101 2009-04-13 Gavin Barraclough <barraclough@apple.com>
3103 Reviewed by Cap'n Geoff Garen.
3106 (Yet another regex runtime).
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.
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):
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.
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):
3370 * yarr/RegexPattern.h: Added.
3371 (JSC::Yarr::CharacterRange::CharacterRange):
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):
3399 2009-04-13 Oliver Hunt <oliver@apple.com>
3401 Reviewed by NOBODY (Missed code from last patch).
3403 * runtime/InternalFunction.cpp:
3404 (JSC::InternalFunction::displayName):
3405 (JSC::InternalFunction::calculatedDisplayName):
3406 * runtime/InternalFunction.h:
3408 2009-04-13 Francisco Tolmasky <francisco@280north.com>
3410 Reviewed by Oliver Hunt.
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>
3415 This change adds the displayName property to functions, which when set overrides the
3416 normal name when appearing in the console.
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
3425 2009-04-13 Geoffrey Garen <ggaren@apple.com>
3427 Reviewed by Sam Weinig.
3429 Disabled another JavaScriptCore test because it fails on Windows but
3430 not Mac, so it makes the bots red.
3432 * tests/mozilla/expected.html:
3434 2009-04-13 Geoffrey Garen <ggaren@apple.com>
3436 Reviewed by Sam Weinig.
3438 Disabled two JavaScriptCore tests because they fail on Window or Mac but
3439 not both, so they make the bots red.
3441 * tests/mozilla/expected.html: Updated expected results.
3443 2009-04-09 Ben Murdoch <benm@google.com>
3445 Reviewed by Alexey Proskuryakov.
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.
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.
3455 2009-04-09 David Kilzer <ddkilzer@apple.com>
3457 Reinstating <rdar://problem/6718589> Option to turn off SVG DOM Objective-C bindings
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.
3463 * Configurations/JavaScriptCore.xcconfig:
3465 2009-04-09 Alexey Proskuryakov <ap@webkit.org>
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.
3470 * Configurations/JavaScriptCore.xcconfig:
3472 2009-04-09 Xan Lopez <xlopez@igalia.com>
3474 Unreviewed build fix.
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__.
3482 2009-04-08 Oliver Hunt <oliver@apple.com>
3484 Reviewed by Adam Roben.
3486 Fix assertion failure in function.apply
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
3494 (JSC::ApplyFunctionCallDotNode::emitBytecode):
3496 2009-04-08 David Kilzer <ddkilzer@apple.com>
3498 <rdar://problem/6718589> Option to turn off SVG DOM Objective-C bindings
3500 Reviewed by Darin Adler and Maciej Stachowiak.
3502 Introduce the ENABLE_SVG_DOM_OBJC_BINDINGS feature define so
3503 that SVG DOM Objective-C bindings may be optionally disabled.
3505 * Configurations/JavaScriptCore.xcconfig: Added
3506 ENABLE_SVG_DOM_OBJC_BINDINGS variable and use it in
3509 2009-04-08 Paul Pedriana <ppedriana@ea.com>
3511 Reviewed by Darin Adler.
3513 https://bugs.webkit.org/show_bug.cgi?id=20422
3514 Allow custom memory allocation control.
3516 * wtf/FastAllocBase.h:
3517 New added file. Implements allocation base class.
3519 Augments existing type traits support as needed by FastAllocBase.
3521 Changed to support FastMalloc match validation.
3522 * wtf/FastMalloc.cpp:
3523 Changed to support FastMalloc match validation.
3525 Added ENABLE_FAST_MALLOC_MATCH_VALIDATION; defaults to 0.
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.
3533 2009-04-07 Oliver Hunt <oliver@apple.com>
3535 Reviewed by Geoff Garen.
3537 Improve function.apply performance
3539 Jump through a few hoops to improve performance of function.apply in the general case.
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.
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.
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):
3558 (JSC::JIT::privateCompileMainPass):
3559 (JSC::JIT::privateCompileSlowCases):
3562 (JSC::JIT::compileOpCallSetupArgs):
3563 (JSC::JIT::compileOpCallVarargsSetupArgs):
3564 (JSC::JIT::compileOpCallVarargs):
3565 (JSC::JIT::compileOpCallVarargsSlowCase):
3567 (JSC::JITStubs::cti_op_load_varargs):
3571 (JSC::ArrayNode::isSimpleArray):
3572 (JSC::ArrayNode::toArgumentList):
3573 (JSC::CallFunctionCallDotNode::emitBytecode):
3574 (JSC::ApplyFunctionCallDotNode::emitBytecode):
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:
3594 2009-04-08 Alexey Proskuryakov <ap@webkit.org>
3596 Reviewed by Darin Adler.
3598 https://bugs.webkit.org/show_bug.cgi?id=25073
3599 JavaScriptCore tests don't run if time zone is not PST
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.
3606 2009-04-07 David Levin <levin@chromium.org>
3608 Reviewed by Sam Weinig and Geoff Garen.
3610 https://bugs.webkit.org/show_bug.cgi?id=25039
3611 UString refactoring to support UChar* sharing.
3613 No change in sunspider perf.
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.
3624 (JSC::UString::append):
3625 (JSC::UString::operator=):
3626 * runtime/UString.h: