Changeset 190063 in webkit
- Timestamp:
- Sep 21, 2015 11:59:34 AM (9 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r190062 r190063 1 2015-09-19 Aleksandr Skachkov <gskachkov@gmail.com> 2 3 New tests introduced in r188545 fail on 32 bit ARM 4 https://bugs.webkit.org/show_bug.cgi?id=148376 5 6 Reviewed by Saam Barati. 7 8 Added correct support of the ARM CPU in JIT functions that are related to arrow function. 9 10 11 * dfg/DFGSpeculativeJIT.cpp: 12 (JSC::DFG::SpeculativeJIT::compileNewFunction): 13 * dfg/DFGSpeculativeJIT.h: 14 (JSC::DFG::SpeculativeJIT::callOperation): 15 * jit/JIT.h: 16 * jit/JITInlines.h: 17 (JSC::JIT::callOperation): 18 * jit/JITOpcodes.cpp: 19 (JSC::JIT::emitNewFuncExprCommon): 20 1 21 2015-09-21 Sukolsak Sakshuwong <sukolsak@gmail.com> 2 22 -
trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp
-
Property
svn:executable
set to
*
r189586 r190063 4639 4639 4640 4640 SpeculateCellOperand scope(this, node->child1()); 4641 #if USE(JSVALUE64) 4641 4642 GPRReg thisValueGPR; 4643 #else 4644 GPRReg thisValuePayloadGPR; 4645 GPRReg thisValueTagGPR; 4646 #endif 4642 4647 GPRReg scopeGPR = scope.gpr(); 4643 4648 … … 4645 4650 4646 4651 if (nodeType == NewArrowFunction) { 4652 #if USE(JSVALUE64) 4647 4653 SpeculateCellOperand thisValue(this, node->child2()); 4648 4654 thisValueGPR = thisValue.gpr(); 4655 #else 4656 JSValueOperand thisValue(this, node->child2(), ManualOperandSpeculation); 4657 thisValuePayloadGPR = thisValue.payloadGPR(); 4658 thisValueTagGPR = thisValue.tagGPR(); 4659 4660 DFG_TYPE_CHECK(thisValue.jsValueRegs(), node->child2(), SpecCell, m_jit.branchIfNotCell(thisValue.jsValueRegs())); 4661 #endif 4649 4662 } 4650 4663 … … 4656 4669 4657 4670 if (nodeType == NewArrowFunction) 4671 #if USE(JSVALUE64) 4658 4672 callOperation(operationNewArrowFunction, resultGPR, scopeGPR, executable, thisValueGPR); 4673 #else 4674 callOperation(operationNewArrowFunction, resultGPR, scopeGPR, executable, thisValueTagGPR, thisValuePayloadGPR); 4675 #endif 4659 4676 else 4660 4677 callOperation(operationNewFunction, resultGPR, scopeGPR, executable); … … 4686 4703 if (nodeType == NewArrowFunction) { 4687 4704 compileNewFunctionCommon<JSArrowFunction>(resultGPR, structure, scratch1GPR, scratch2GPR, scopeGPR, slowPath, JSArrowFunction::allocationSize(0), executable, JSArrowFunction::offsetOfScopeChain(), JSArrowFunction::offsetOfExecutable(), JSArrowFunction::offsetOfRareData()); 4688 4705 #if USE(JSVALUE64) 4689 4706 m_jit.storePtr(thisValueGPR, JITCompiler::Address(resultGPR, JSArrowFunction::offsetOfThisValue())); 4690 4691 4707 addSlowPathGenerator(slowPathCall(slowPath, this, operationNewArrowFunctionWithInvalidatedReallocationWatchpoint, resultGPR, scopeGPR, executable, thisValueGPR)); 4708 #else 4709 m_jit.store32(thisValueTagGPR, MacroAssembler::Address(resultGPR, JSArrowFunction::offsetOfThisValue() + TagOffset)); 4710 m_jit.store32(thisValuePayloadGPR, MacroAssembler::Address(resultGPR, JSArrowFunction::offsetOfThisValue() + PayloadOffset)); 4711 4712 addSlowPathGenerator(slowPathCall(slowPath, this, operationNewArrowFunctionWithInvalidatedReallocationWatchpoint, resultGPR, scopeGPR, executable, thisValueTagGPR, thisValuePayloadGPR)); 4713 #endif 4692 4714 } 4693 4715 -
Property
svn:executable
set to
-
trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h
-
Property
svn:executable
set to
*
r189995 r190063 1632 1632 return appendCallSetResult(operation, resultPayload, resultTag); 1633 1633 } 1634 JITCompiler::Call callOperation(J_JITOperation_EJscCJ operation, GPRReg result Tag, GPRReg resultPayload, GPRReg arg1, JSCell* cell, GPRReg arg2)1635 { 1636 m_jit.setupArgumentsWithExecState(arg1, TrustedImmPtr(cell), arg2);1637 return appendCallSetResult(operation, result Payload, resultTag);1634 JITCompiler::Call callOperation(J_JITOperation_EJscCJ operation, GPRReg result, GPRReg arg1, JSCell* cell, GPRReg arg2Tag, GPRReg arg2Payload) 1635 { 1636 m_jit.setupArgumentsWithExecState(arg1, TrustedImmPtr(cell), EABI_32BIT_DUMMY_ARG arg2Payload, arg2Tag); 1637 return appendCallSetResult(operation, result); 1638 1638 } 1639 1639 JITCompiler::Call callOperation(J_JITOperation_ESsiCI operation, GPRReg resultTag, GPRReg resultPayload, StructureStubInfo* stubInfo, GPRReg arg1, const UniquedStringImpl* uid) -
Property
svn:executable
set to
-
trunk/Source/JavaScriptCore/jit/JIT.h
-
Property
svn:executable
set to
*
r189920 r190063 823 823 MacroAssembler::Call callOperation(V_JITOperation_EJZJ, RegisterID, RegisterID, int32_t, RegisterID, RegisterID); 824 824 MacroAssembler::Call callOperation(V_JITOperation_EZJ, int32_t, RegisterID, RegisterID); 825 MacroAssembler::Call callOperation(J_JITOperation_EJscCJ, int, GPRReg, JSCell*, GPRReg, GPRReg); 825 826 #endif 826 827 -
Property
svn:executable
set to
-
trunk/Source/JavaScriptCore/jit/JITInlines.h
-
Property
svn:executable
set to
*
r189920 r190063 747 747 return appendCallWithExceptionCheck(operation); 748 748 } 749 750 ALWAYS_INLINE MacroAssembler::Call JIT::callOperation(J_JITOperation_EJscCJ operation, int dst, GPRReg arg1, JSCell* cell, GPRReg arg2Tag, GPRReg arg2Payload) 751 { 752 setupArgumentsWithExecState(arg1, TrustedImmPtr(cell), EABI_32BIT_DUMMY_ARG arg2Payload, arg2Tag); 753 return appendCallWithExceptionCheckSetJSValueResult(operation, dst); 754 } 749 755 750 756 #undef EABI_32BIT_DUMMY_ARG -
Property
svn:executable
set to
-
trunk/Source/JavaScriptCore/jit/JITOpcodes.cpp
-
Property
svn:executable
set to
*
r189995 r190063 996 996 #else 997 997 emitLoadPayload(currentInstruction[2].u.operand, regT0); 998 if (isArrowFunction) 999 emitLoadPayload(currentInstruction[4].u.operand, regT1); 998 if (isArrowFunction) { 999 int value = currentInstruction[4].u.operand; 1000 emitLoad(value, regT3, regT2); 1001 } 1000 1002 notUndefinedScope = branch32(NotEqual, tagFor(currentInstruction[2].u.operand), TrustedImm32(JSValue::UndefinedTag)); 1001 1003 emitStore(dst, jsUndefined()); … … 1006 1008 FunctionExecutable* function = m_codeBlock->functionExpr(currentInstruction[3].u.operand); 1007 1009 if (isArrowFunction) 1010 #if USE(JSVALUE64) 1008 1011 callOperation(operationNewArrowFunction, dst, regT0, function, regT1); 1012 #else 1013 callOperation(operationNewArrowFunction, dst, regT0, function, regT3, regT2); 1014 #endif 1009 1015 else 1010 1016 callOperation(operationNewFunction, dst, regT0, function); -
Property
svn:executable
set to
Note: See TracChangeset
for help on using the changeset viewer.