Changeset 128260 in webkit for trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp
- Timestamp:
- Sep 11, 2012, 9:08:18 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp
r128111 r128260 464 464 } 465 465 466 // If this call frame created an activation or an 'arguments' object, tear it off. 467 if (oldCodeBlock->codeType() == FunctionCode && oldCodeBlock->needsFullScopeChain()) { 468 if (!callFrame->uncheckedR(oldCodeBlock->activationRegister()).jsValue()) { 469 oldCodeBlock->createActivation(callFrame); 470 scope = callFrame->scope(); 471 } 472 while (!scope->inherits(&JSActivation::s_info)) 473 scope = scope->next(); 474 475 callFrame->setScope(scope); 476 JSActivation* activation = asActivation(scope); 477 activation->tearOff(*scope->globalData()); 478 if (JSValue arguments = callFrame->uncheckedR(unmodifiedArgumentsRegister(oldCodeBlock->argumentsRegister())).jsValue()) 479 asArguments(arguments)->didTearOffActivation(callFrame->globalData(), activation); 480 } else if (oldCodeBlock->usesArguments() && !oldCodeBlock->isStrictMode()) { 481 if (JSValue arguments = callFrame->uncheckedR(unmodifiedArgumentsRegister(oldCodeBlock->argumentsRegister())).jsValue()) 482 asArguments(arguments)->tearOff(callFrame); 466 JSValue activation; 467 if (oldCodeBlock->codeType() == FunctionCode && oldCodeBlock->needsActivation()) { 468 activation = callFrame->uncheckedR(oldCodeBlock->activationRegister()).jsValue(); 469 if (activation) 470 jsCast<JSActivation*>(activation)->tearOff(*scope->globalData()); 471 } 472 473 if (oldCodeBlock->codeType() == FunctionCode && oldCodeBlock->usesArguments()) { 474 if (JSValue arguments = callFrame->uncheckedR(unmodifiedArgumentsRegister(oldCodeBlock->argumentsRegister())).jsValue()) { 475 if (activation) 476 jsCast<Arguments*>(arguments)->didTearOffActivation(callFrame->globalData(), jsCast<JSActivation*>(activation)); 477 else 478 jsCast<Arguments*>(arguments)->tearOff(callFrame); 479 } 483 480 } 484 481
Note:
See TracChangeset
for help on using the changeset viewer.