Changeset 155415 in webkit for trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp
- Timestamp:
- Sep 9, 2013, 10:37:51 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp
r155201 r155415 262 262 Node* getLocal(unsigned operand) 263 263 { 264 Node* node = m_currentBlock->variablesAtTail.local(operand); 264 unsigned local = operandToLocal(operand); 265 Node* node = m_currentBlock->variablesAtTail.local(local); 265 266 bool isCaptured = m_codeBlock->isCaptured(operand, inlineCallFrame()); 266 267 … … 288 289 } 289 290 } else { 290 m_preservedVars.set( operand);291 m_preservedVars.set(local); 291 292 variable = newVariableAccessData(operand, isCaptured); 292 293 } 293 294 294 295 node = injectLazyOperandSpeculation(addToGraph(GetLocal, OpInfo(variable))); 295 m_currentBlock->variablesAtTail.local( operand) = node;296 m_currentBlock->variablesAtTail.local(local) = node; 296 297 return node; 297 298 } 298 299 void setLocal(unsigned operand, Node* value, SetMode setMode = NormalSet) 299 300 { 301 unsigned local = operandToLocal(operand); 300 302 bool isCaptured = m_codeBlock->isCaptured(operand, inlineCallFrame()); 301 303 … … 312 314 m_inlineStackTop->m_exitProfile.hasExitSite(m_currentIndex, BadIndexingType)); 313 315 Node* node = addToGraph(SetLocal, OpInfo(variableAccessData), value); 314 m_currentBlock->variablesAtTail.local( operand) = node;316 m_currentBlock->variablesAtTail.local(local) = node; 315 317 } 316 318 … … 432 434 433 435 if (!operandIsArgument(operand)) 434 m_preservedVars.set(operand );436 m_preservedVars.set(operandToLocal(operand)); 435 437 436 438 Node* node = m_currentBlock->variablesAtTail.operand(operand); … … 460 462 flushDirect(inlineStackEntry->remapOperand(argumentToOperand(argument))); 461 463 for (int local = 0; local < inlineStackEntry->m_codeBlock->m_numVars; ++local) { 462 if (!inlineStackEntry->m_codeBlock->isCaptured(local ))464 if (!inlineStackEntry->m_codeBlock->isCaptured(localToOperand(local))) 463 465 continue; 464 flushDirect(inlineStackEntry->remapOperand(local ));466 flushDirect(inlineStackEntry->remapOperand(localToOperand(local))); 465 467 } 466 468 } … … 1281 1283 1282 1284 // Make sure that the area used by the call frame is reserved. 1283 for (int arg = inlineCallFrameStart + JSStack::CallFrameHeaderSize + codeBlock->m_numVars; arg-- > inlineCallFrameStart;)1285 for (int arg = operandToLocal(inlineCallFrameStart) + JSStack::CallFrameHeaderSize + codeBlock->m_numVars; arg-- > operandToLocal(inlineCallFrameStart);) 1284 1286 m_preservedVars.set(arg); 1285 1287 1286 1288 // Make sure that we have enough locals. 1287 unsigned newNumLocals = inlineCallFrameStart+ JSStack::CallFrameHeaderSize + codeBlock->m_numCalleeRegisters;1289 unsigned newNumLocals = operandToLocal(inlineCallFrameStart) + JSStack::CallFrameHeaderSize + codeBlock->m_numCalleeRegisters; 1288 1290 if (newNumLocals > m_numLocals) { 1289 1291 m_numLocals = newNumLocals; … … 1885 1887 // Initialize all locals to undefined. 1886 1888 for (int i = 0; i < m_inlineStackTop->m_codeBlock->m_numVars; ++i) 1887 set( i, constantUndefined(), SetOnEntry);1889 set(localToOperand(i), constantUndefined(), SetOnEntry); 1888 1890 NEXT_OPCODE(op_enter); 1889 1891 … … 3152 3154 case op_init_lazy_reg: { 3153 3155 set(currentInstruction[1].u.operand, getJSConstantForValue(JSValue())); 3154 ASSERT( currentInstruction[1].u.operand >= 0);3155 m_graph.m_lazyVars.set( currentInstruction[1].u.operand);3156 ASSERT(operandIsLocal(currentInstruction[1].u.operand)); 3157 m_graph.m_lazyVars.set(operandToLocal(currentInstruction[1].u.operand)); 3156 3158 NEXT_OPCODE(op_init_lazy_reg); 3157 3159 } … … 3382 3384 else { 3383 3385 for (int i = byteCodeParser->m_codeBlock->m_numVars; i--;) { 3384 if (byteCodeParser->m_codeBlock->isCaptured( i))3386 if (byteCodeParser->m_codeBlock->isCaptured(localToOperand(i))) 3385 3387 inlineCallFrame.capturedVars.set(i); 3386 3388 } … … 3389 3391 for (int i = argumentCountIncludingThis; i--;) { 3390 3392 if (codeBlock->isCaptured(argumentToOperand(i))) 3391 inlineCallFrame.capturedVars.set( argumentToOperand(i) + inlineCallFrame.stackOffset);3393 inlineCallFrame.capturedVars.set(operandToLocal(argumentToOperand(i) + inlineCallFrame.stackOffset)); 3392 3394 } 3393 3395 for (size_t i = codeBlock->m_numVars; i--;) { 3394 if (codeBlock->isCaptured(i)) 3395 inlineCallFrame.capturedVars.set(i + inlineCallFrame.stackOffset); 3396 int localOperand = localToOperand(i); 3397 if (codeBlock->isCaptured(localOperand)) 3398 inlineCallFrame.capturedVars.set(operandToLocal(localOperand + inlineCallFrame.stackOffset)); 3396 3399 } 3397 3400
Note:
See TracChangeset
for help on using the changeset viewer.