Changeset 129426 in webkit for trunk/Source/JavaScriptCore/dfg
- Timestamp:
- Sep 24, 2012, 4:12:00 PM (13 years ago)
- Location:
- trunk/Source/JavaScriptCore/dfg
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/dfg/DFGOperations.cpp
r128957 r129426 1166 1166 ASSERT(!exec->globalData().exception); 1167 1167 return result; 1168 }1169 1170 void DFG_OPERATION operationTearOffActivation(ExecState* exec, JSCell* activationCell)1171 {1172 JSGlobalData& globalData = exec->globalData();1173 NativeCallFrameTracer tracer(&globalData, exec);1174 jsCast<JSActivation*>(activationCell)->tearOff(exec->globalData());1175 1168 } 1176 1169 -
trunk/Source/JavaScriptCore/dfg/DFGOperations.h
r128957 r129426 178 178 JSCell* DFG_OPERATION operationCreateArguments(ExecState*) WTF_INTERNAL; 179 179 JSCell* DFG_OPERATION operationCreateInlinedArguments(ExecState*, InlineCallFrame*) WTF_INTERNAL; 180 void DFG_OPERATION operationTearOffActivation(ExecState*, JSCell*) WTF_INTERNAL;181 180 void DFG_OPERATION operationTearOffArguments(ExecState*, JSCell*, JSCell*) WTF_INTERNAL; 182 181 void DFG_OPERATION operationTearOffInlinedArguments(ExecState*, JSCell*, JSCell*, InlineCallFrame*) WTF_INTERNAL; -
trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp
r129324 r129426 31 31 32 32 #include "DFGSlowPathGenerator.h" 33 #include "JS VariableObject.h"33 #include "JSActivation.h" 34 34 35 35 namespace JSC { namespace DFG { … … 4071 4071 case TearOffActivation: { 4072 4072 JSValueOperand activationValue(this, node.child1()); 4073 GPRTemporary scratch(this); 4073 4074 4074 4075 GPRReg activationValueTagGPR = activationValue.tagGPR(); 4075 4076 GPRReg activationValuePayloadGPR = activationValue.payloadGPR(); 4076 4077 JITCompiler::Jump created = m_jit.branch32(JITCompiler::NotEqual, activationValueTagGPR, TrustedImm32(JSValue::EmptyValueTag)); 4078 4079 addSlowPathGenerator( 4080 slowPathCall( 4081 created, this, operationTearOffActivation, NoResult, activationValuePayloadGPR)); 4082 4077 GPRReg scratchGPR = scratch.gpr(); 4078 4079 JITCompiler::Jump notCreated = m_jit.branch32(JITCompiler::Equal, activationValueTagGPR, TrustedImm32(JSValue::EmptyValueTag)); 4080 4081 SharedSymbolTable* symbolTable = m_jit.symbolTableFor(node.codeOrigin); 4082 int registersOffset = JSActivation::registersOffset(symbolTable); 4083 4084 int captureEnd = symbolTable->captureEnd(); 4085 for (int i = symbolTable->captureStart(); i < captureEnd; ++i) { 4086 m_jit.loadPtr( 4087 JITCompiler::Address( 4088 GPRInfo::callFrameRegister, i * sizeof(Register) + OBJECT_OFFSETOF(EncodedValueDescriptor, asBits.tag)), 4089 scratchGPR); 4090 m_jit.storePtr( 4091 scratchGPR, JITCompiler::Address( 4092 activationValuePayloadGPR, registersOffset + i * sizeof(Register) + OBJECT_OFFSETOF(EncodedValueDescriptor, asBits.tag))); 4093 m_jit.loadPtr( 4094 JITCompiler::Address( 4095 GPRInfo::callFrameRegister, i * sizeof(Register) + OBJECT_OFFSETOF(EncodedValueDescriptor, asBits.payload)), 4096 scratchGPR); 4097 m_jit.storePtr( 4098 scratchGPR, JITCompiler::Address( 4099 activationValuePayloadGPR, registersOffset + i * sizeof(Register) + OBJECT_OFFSETOF(EncodedValueDescriptor, asBits.payload))); 4100 } 4101 m_jit.addPtr(TrustedImm32(registersOffset), activationValuePayloadGPR, scratchGPR); 4102 m_jit.storePtr(scratchGPR, JITCompiler::Address(activationValuePayloadGPR, JSActivation::offsetOfRegisters())); 4103 4104 notCreated.link(&m_jit); 4083 4105 noResult(m_compileIndex); 4084 4106 break; -
trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp
r129316 r129426 4042 4042 4043 4043 JSValueOperand activationValue(this, node.child1()); 4044 GPRTemporary scratch(this); 4044 4045 GPRReg activationValueGPR = activationValue.gpr(); 4045 4046 JITCompiler::Jump created = m_jit.branchTestPtr(JITCompiler::NonZero, activationValueGPR); 4047 4048 addSlowPathGenerator( 4049 slowPathCall( 4050 created, this, operationTearOffActivation, NoResult, activationValueGPR)); 4051 4046 GPRReg scratchGPR = scratch.gpr(); 4047 4048 JITCompiler::Jump notCreated = m_jit.branchTestPtr(JITCompiler::Zero, activationValueGPR); 4049 4050 SharedSymbolTable* symbolTable = m_jit.symbolTableFor(node.codeOrigin); 4051 int registersOffset = JSActivation::registersOffset(symbolTable); 4052 4053 int captureEnd = symbolTable->captureEnd(); 4054 for (int i = symbolTable->captureStart(); i < captureEnd; ++i) { 4055 m_jit.loadPtr( 4056 JITCompiler::Address( 4057 GPRInfo::callFrameRegister, i * sizeof(Register)), scratchGPR); 4058 m_jit.storePtr( 4059 scratchGPR, JITCompiler::Address( 4060 activationValueGPR, registersOffset + i * sizeof(Register))); 4061 } 4062 m_jit.addPtr(TrustedImm32(registersOffset), activationValueGPR, scratchGPR); 4063 m_jit.storePtr(scratchGPR, JITCompiler::Address(activationValueGPR, JSActivation::offsetOfRegisters())); 4064 4065 notCreated.link(&m_jit); 4052 4066 noResult(m_compileIndex); 4053 4067 break;
Note:
See TracChangeset
for help on using the changeset viewer.