Changeset 155711 in webkit for trunk/Source/JavaScriptCore/bytecompiler
- Timestamp:
- Sep 13, 2013, 11:03:55 AM (12 years ago)
- Location:
- trunk/Source/JavaScriptCore/bytecompiler
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp
r155657 r155711 117 117 { 118 118 ConcurrentJITLocker locker(symbolTable().m_lock); 119 int index = m_calleeRegisters.size();119 int index = localToOperand(m_calleeRegisters.size()); 120 120 SymbolTableEntry newEntry(index, isConstant ? ReadOnly : 0); 121 121 SymbolTable::Map::AddResult result = symbolTable().add(locker, ident.impl(), newEntry); … … 224 224 } 225 225 226 m_symbolTable->setCaptureStart( m_codeBlock->m_numVars);226 m_symbolTable->setCaptureStart(localToOperand(m_codeBlock->m_numVars)); 227 227 228 228 if (functionBody->usesArguments() || codeBlock->usesEval()) { // May reify arguments object. … … 311 311 } 312 312 313 m_symbolTable->setCaptureEnd( codeBlock->m_numVars);313 m_symbolTable->setCaptureEnd(localToOperand(codeBlock->m_numVars)); 314 314 315 315 m_firstLazyFunction = codeBlock->m_numVars; … … 326 326 else { 327 327 emitInitLazyRegister(reg.get()); 328 m_lazyFunctions.set( reg->index(), function);328 m_lazyFunctions.set(localToOperand(reg->index()), function); 329 329 } 330 330 } … … 338 338 339 339 if (shouldCaptureAllTheThings) 340 m_symbolTable->setCaptureEnd( codeBlock->m_numVars);340 m_symbolTable->setCaptureEnd(localToOperand(codeBlock->m_numVars)); 341 341 342 342 FunctionParameters& parameters = *functionBody->parameters(); … … 345 345 // Add "this" as a parameter 346 346 int nextParameterIndex = CallFrame::thisArgumentOffset(); 347 m_thisRegister.setIndex(nextParameterIndex --);347 m_thisRegister.setIndex(nextParameterIndex++); 348 348 m_codeBlock->addParameter(); 349 349 350 for (size_t i = 0; i < parameters.size(); ++i, --nextParameterIndex) {350 for (size_t i = 0; i < parameters.size(); ++i, ++nextParameterIndex) { 351 351 int index = nextParameterIndex; 352 352 if (capturedArguments.size() && capturedArguments[i]) { … … 506 506 RegisterID* BytecodeGenerator::createLazyRegisterIfNecessary(RegisterID* reg) 507 507 { 508 if (m_lastLazyFunction <= reg->index() || reg->index() < m_firstLazyFunction) 508 int localVariableNumber = operandToLocal(reg->index()); 509 510 if (m_lastLazyFunction <= localVariableNumber || localVariableNumber < m_firstLazyFunction) 509 511 return reg; 510 emitLazyNewFunction(reg, m_lazyFunctions.get( reg->index()));512 emitLazyNewFunction(reg, m_lazyFunctions.get(localVariableNumber)); 511 513 return reg; 512 514 } … … 514 516 RegisterID* BytecodeGenerator::newRegister() 515 517 { 516 m_calleeRegisters.append( m_calleeRegisters.size());518 m_calleeRegisters.append(localToOperand(m_calleeRegisters.size())); 517 519 m_codeBlock->m_numCalleeRegisters = max<int>(m_codeBlock->m_numCalleeRegisters, m_calleeRegisters.size()); 518 520 return &m_calleeRegisters.last(); … … 1485 1487 argv.append(newTemporary()); 1486 1488 // op_new_array requires the initial values to be a sequential range of registers 1487 ASSERT(argv.size() == 1 || argv[argv.size() - 1]->index() == argv[argv.size() - 2]->index() +1);1489 ASSERT(argv.size() == 1 || argv[argv.size() - 1]->index() == argv[argv.size() - 2]->index() - 1); 1488 1490 emitNode(argv.last().get(), n->value()); 1489 1491 } -
trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h
r155415 r155711 67 67 RegisterID* thisRegister() { return m_argv[0].get(); } 68 68 RegisterID* argumentRegister(unsigned i) { return m_argv[i + 1].get(); } 69 unsigned registerOffset() { return m_argv.last()->index() + CallFrame::offsetFor(argumentCountIncludingThis()); }69 unsigned registerOffset() { return -m_argv.last()->index() + CallFrame::offsetFor(argumentCountIncludingThis()); } 70 70 unsigned argumentCountIncludingThis() { return m_argv.size(); } 71 71 RegisterID* profileHookRegister() { return m_profileHookRegister.get(); } -
trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp
r153477 r155711 394 394 for (int i = argumentCountIncludingThis - 1; i >= 0; --i) { 395 395 m_argv[i] = generator.newTemporary(); 396 ASSERT(static_cast<size_t>(i) == m_argv.size() - 1 || m_argv[i]->index() == m_argv[i + 1]->index() +1);396 ASSERT(static_cast<size_t>(i) == m_argv.size() - 1 || m_argv[i]->index() == m_argv[i + 1]->index() - 1); 397 397 } 398 398 }
Note:
See TracChangeset
for help on using the changeset viewer.