Changeset 155730 in webkit
- Timestamp:
- Sep 13, 2013, 4:18:19 PM (11 years ago)
- Location:
- trunk
- Files:
-
- 3 added
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r155728 r155730 1 2013-09-13 Filip Pizlo <fpizlo@apple.com> 2 3 DFG AI assumes that ToThis can never return non-object if it is passed an object, and operationToThis will get the wrong value of isStrictMode() if there's inlining 4 https://bugs.webkit.org/show_bug.cgi?id=121330 5 6 Reviewed by Mark Hahnenberg and Oliver Hunt. 7 8 * js/dfg-strict-mode-to-this-expected.txt: Added. 9 * js/dfg-strict-mode-to-this.html: Added. 10 * js/jsc-test-list: 11 * js/script-tests/dfg-strict-mode-to-this.js: Added. 12 (thingy.bar): 13 (thingy.foo): 14 (thingy): 15 1 16 2013-09-13 Alexey Proskuryakov <ap@apple.com> 2 17 -
trunk/LayoutTests/js/jsc-test-list
r155452 r155730 226 226 js/dfg-side-effect-assignment-osr-exit 227 227 js/dfg-sqrt-backwards-propagation 228 js/dfg-strict-mode-to-this 228 229 js/dfg-string-out-of-bounds-check-structure 229 230 js/dfg-string-out-of-bounds-cse -
trunk/Source/JavaScriptCore/ChangeLog
r155729 r155730 1 2013-09-13 Filip Pizlo <fpizlo@apple.com> 2 3 DFG AI assumes that ToThis can never return non-object if it is passed an object, and operationToThis will get the wrong value of isStrictMode() if there's inlining 4 https://bugs.webkit.org/show_bug.cgi?id=121330 5 6 Reviewed by Mark Hahnenberg and Oliver Hunt. 7 8 Also print whether a function is strict mode in debug dumps. 9 10 * bytecode/CodeBlock.cpp: 11 (JSC::CodeBlock::dumpAssumingJITType): 12 * bytecode/CodeOrigin.cpp: 13 (JSC::InlineCallFrame::dumpInContext): 14 * dfg/DFGAbstractInterpreterInlines.h: 15 (JSC::DFG::::executeEffects): 16 * dfg/DFGOperations.cpp: 17 * dfg/DFGOperations.h: 18 * dfg/DFGSpeculativeJIT32_64.cpp: 19 (JSC::DFG::SpeculativeJIT::compile): 20 * dfg/DFGSpeculativeJIT64.cpp: 21 (JSC::DFG::SpeculativeJIT::compile): 22 1 23 2013-09-13 Anders Carlsson <andersca@apple.com> 2 24 -
trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp
r155711 r155730 140 140 if (ownerExecutable()->neverInline()) 141 141 out.print(" (NeverInline)"); 142 if (ownerExecutable()->isStrictMode()) 143 out.print(" (StrictMode)"); 142 144 out.print("]"); 143 145 } -
trunk/Source/JavaScriptCore/bytecode/CodeOrigin.cpp
r154935 r155730 111 111 void InlineCallFrame::dumpInContext(PrintStream& out, DumpContext* context) const 112 112 { 113 out.print(briefFunctionInformation(), ":<", RawPointer(executable.get()), ", bc#", caller.bytecodeIndex, ", ", specializationKind()); 113 out.print(briefFunctionInformation(), ":<", RawPointer(executable.get())); 114 if (executable->isStrictMode()) 115 out.print(" (StrictMode)"); 116 out.print(", bc#", caller.bytecodeIndex, ", ", specializationKind()); 114 117 if (callee) 115 118 out.print(", known callee: ", inContext(JSValue(callee.get()), context)); -
trunk/Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h
r155567 r155730 1045 1045 AbstractValue& destination = forNode(node); 1046 1046 1047 destination = source; 1048 destination.merge(SpecObject); 1047 if (m_graph.executableFor(node->codeOrigin)->isStrictMode()) 1048 destination.makeHeapTop(); 1049 else { 1050 destination = source; 1051 destination.merge(SpecObject); 1052 } 1049 1053 break; 1050 1054 } -
trunk/Source/JavaScriptCore/dfg/DFGOperations.cpp
r155711 r155730 472 472 NativeCallFrameTracer tracer(vm, exec); 473 473 474 return JSValue::encode(JSValue::decode(encodedOp).toThis(exec, exec->codeBlock()->isStrictMode() ? StrictMode : NotStrictMode)); 474 return JSValue::encode(JSValue::decode(encodedOp).toThis(exec, NotStrictMode)); 475 } 476 477 EncodedJSValue DFG_OPERATION operationToThisStrict(ExecState* exec, EncodedJSValue encodedOp) 478 { 479 VM* vm = &exec->vm(); 480 NativeCallFrameTracer tracer(vm, exec); 481 482 return JSValue::encode(JSValue::decode(encodedOp).toThis(exec, StrictMode)); 475 483 } 476 484 -
trunk/Source/JavaScriptCore/dfg/DFGOperations.h
r155243 r155730 137 137 JSCell* DFG_OPERATION operationCreateThis(ExecState*, JSObject* constructor, int32_t inlineCapacity) WTF_INTERNAL; 138 138 EncodedJSValue DFG_OPERATION operationToThis(ExecState*, EncodedJSValue encodedOp1) WTF_INTERNAL; 139 EncodedJSValue DFG_OPERATION operationToThisStrict(ExecState*, EncodedJSValue encodedOp1) WTF_INTERNAL; 139 140 EncodedJSValue DFG_OPERATION operationValueAdd(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2) WTF_INTERNAL; 140 141 EncodedJSValue DFG_OPERATION operationValueAddNotNumber(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2) WTF_INTERNAL; -
trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp
r155711 r155730 3612 3612 m_jit.move(thisValuePayloadGPR, tempGPR); 3613 3613 m_jit.move(thisValueTagGPR, tempTagGPR); 3614 J_DFGOperation_EJ function; 3615 if (m_jit.graph().executableFor(node->codeOrigin)->isStrictMode()) 3616 function = operationToThisStrict; 3617 else 3618 function = operationToThis; 3614 3619 addSlowPathGenerator( 3615 3620 slowPathCall( 3616 slowCases, this, operationToThis,3621 slowCases, this, function, 3617 3622 JSValueRegs(tempTagGPR, tempGPR), thisValueTagGPR, thisValuePayloadGPR)); 3618 3623 -
trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp
r155711 r155730 3516 3516 TrustedImm32(FinalObjectType))); 3517 3517 m_jit.move(thisValueGPR, tempGPR); 3518 J_DFGOperation_EJ function; 3519 if (m_jit.graph().executableFor(node->codeOrigin)->isStrictMode()) 3520 function = operationToThisStrict; 3521 else 3522 function = operationToThis; 3518 3523 addSlowPathGenerator( 3519 slowPathCall(slowCases, this, operationToThis, tempGPR, thisValueGPR));3524 slowPathCall(slowCases, this, function, tempGPR, thisValueGPR)); 3520 3525 3521 3526 jsValueResult(tempGPR, node); -
trunk/Tools/ChangeLog
r155729 r155730 1 2013-09-13 Filip Pizlo <fpizlo@apple.com> 2 3 DFG AI assumes that ToThis can never return non-object if it is passed an object, and operationToThis will get the wrong value of isStrictMode() if there's inlining 4 https://bugs.webkit.org/show_bug.cgi?id=121330 5 6 Reviewed by Mark Hahnenberg and Oliver Hunt. 7 8 We should run tests even if they don't have expected files yet. 9 10 * Scripts/run-layout-jsc: 11 1 12 2013-09-13 Anders Carlsson <andersca@apple.com> 2 13 -
trunk/Tools/Scripts/run-layout-jsc
r155479 r155730 107 107 fi 108 108 109 if [ -f $ expectedOut -a -f $jsTest ]109 if [ -f $jsTest ] 110 110 then 111 111 if [ `uname` = 'Darwin' ]; then
Note:
See TracChangeset
for help on using the changeset viewer.