Changeset 100224 in webkit for trunk/Source/JavaScriptCore/runtime/Arguments.h
- Timestamp:
- Nov 14, 2011, 5:39:52 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/runtime/Arguments.h
r100165 r100224 71 71 } 72 72 73 static Arguments* createAnd CopyRegisters(JSGlobalData& globalData, CallFrame* callFrame)73 static Arguments* createAndTearOff(JSGlobalData& globalData, CallFrame* callFrame) 74 74 { 75 75 Arguments* arguments = new (allocateCell<Arguments>(globalData.heap)) Arguments(callFrame); 76 arguments->finishCreationAnd CopyRegisters(callFrame);76 arguments->finishCreationAndTearOff(callFrame); 77 77 return arguments; 78 78 } … … 112 112 113 113 void copyToRegisters(ExecState* exec, Register* buffer, uint32_t maxSize); 114 void copyRegisters(JSGlobalData&);114 void tearOff(JSGlobalData&); 115 115 bool isTornOff() const { return d->registerArray; } 116 void setActivation(JSGlobalData& globalData, JSActivation* activation) 117 { 118 ASSERT(!d->registerArray); 116 void didTearOffActivation(JSGlobalData& globalData, JSActivation* activation) 117 { 118 if (isTornOff()) 119 return; 119 120 d->activation.set(globalData, this, activation); 120 121 d->registers = &activation->registerAt(0); … … 129 130 static const unsigned StructureFlags = OverridesGetOwnPropertySlot | OverridesVisitChildren | OverridesGetPropertyNames | JSObject::StructureFlags; 130 131 131 void finishCreationButDont CopyRegisters(CallFrame*);132 void finishCreationButDontTearOff(CallFrame*); 132 133 void finishCreation(CallFrame*); 133 void finishCreationAnd CopyRegisters(CallFrame*);134 void finishCreationAndTearOff(CallFrame*); 134 135 void finishCreation(CallFrame*, NoParametersType); 135 136 … … 191 192 } 192 193 193 inline void Arguments::finishCreationButDont CopyRegisters(CallFrame* callFrame)194 inline void Arguments::finishCreationButDontTearOff(CallFrame* callFrame) 194 195 { 195 196 Base::finishCreation(callFrame->globalData()); … … 234 235 { 235 236 ASSERT(!callFrame->isInlineCallFrame()); 236 finishCreationButDont CopyRegisters(callFrame);237 finishCreationButDontTearOff(callFrame); 237 238 if (d->isStrictMode) 238 copyRegisters(callFrame->globalData());239 } 240 241 inline void Arguments::finishCreationAnd CopyRegisters(CallFrame* callFrame)239 tearOff(callFrame->globalData()); 240 } 241 242 inline void Arguments::finishCreationAndTearOff(CallFrame* callFrame) 242 243 { 243 244 Base::finishCreation(callFrame->globalData()); … … 357 358 d->isStrictMode = callFrame->codeBlock()->isStrictMode(); 358 359 if (d->isStrictMode) 359 copyRegisters(callFrame->globalData());360 } 361 362 inline void Arguments:: copyRegisters(JSGlobalData& globalData)360 tearOff(callFrame->globalData()); 361 } 362 363 inline void Arguments::tearOff(JSGlobalData& globalData) 363 364 { 364 365 ASSERT(!isTornOff()); … … 377 378 } 378 379 379 // This JSActivation function is defined here so it can get at Arguments::setRegisters.380 inline void JSActivation::copyRegisters(JSGlobalData& globalData)381 {382 ASSERT(!m_registerArray);383 384 size_t numLocals = m_numCapturedVars + m_numParametersMinusThis;385 386 if (!numLocals)387 return;388 389 int registerOffset = m_numParametersMinusThis + RegisterFile::CallFrameHeaderSize;390 size_t registerArraySize = numLocals + RegisterFile::CallFrameHeaderSize;391 392 OwnArrayPtr<WriteBarrier<Unknown> > registerArray = copyRegisterArray(globalData, m_registers - registerOffset, registerArraySize, m_numParametersMinusThis + 1);393 WriteBarrier<Unknown>* registers = registerArray.get() + registerOffset;394 setRegisters(registers, registerArray.release());395 }396 397 380 } // namespace JSC 398 381
Note:
See TracChangeset
for help on using the changeset viewer.