Browse Source

Do not modify pops counter of LocalStack during finalization.

That fixes LocalStack::size() returning incorrect values after LocalStack::finalize() has been called.
cl-refactor
Paweł Bylica 10 years ago
parent
commit
c8846eb01a
  1. 9
      evmjit/libevmjit/BasicBlock.cpp

9
evmjit/libevmjit/BasicBlock.cpp

@ -122,17 +122,18 @@ void LocalStack::finalize(llvm::IRBuilder<>& _builder, llvm::BasicBlock& _bb)
} }
// Add new items // Add new items
auto pops = m_globalPops; // Copy pops counter to keep original value
for (auto& item: m_local) for (auto& item: m_local)
{ {
if (m_globalPops) // Override poped global items if (pops) // Override poped global items
m_global.set(--m_globalPops, item); // using pops counter as the index m_global.set(--pops, item); // using pops counter as the index
else else
m_global.push(item); m_global.push(item);
} }
// Pop not overriden items // Pop not overriden items
if (m_globalPops) if (pops)
m_global.pop(m_globalPops); m_global.pop(pops);
} }
} }

Loading…
Cancel
Save