Browse Source

Changed semantics of JUMPDEST so that *the next* instruction is a jump destination

cl-refactor
artur-zawlocki 10 years ago
parent
commit
017bfd9d7a
  1. 12
      libevmjit/Compiler.cpp

12
libevmjit/Compiler.cpp

@ -91,9 +91,12 @@ void Compiler::createBasicBlocks(bytesConstRef bytecode)
case Instruction::JUMPDEST:
{
// A basic block starts here.
splitPoints.insert(currentPC);
indirectJumpTargets.push_back(currentPC);
// A basic block starts at the next instruction.
if (currentPC + 1 < bytecode.size())
{
splitPoints.insert(currentPC + 1);
indirectJumpTargets.push_back(currentPC + 1);
}
break;
}
@ -653,8 +656,7 @@ void Compiler::compileBasicBlock(BasicBlock& basicBlock, bytesConstRef bytecode,
case Instruction::JUMPDEST:
{
// Extra asserts just in case.
assert(currentPC == basicBlock.begin());
// Nothing to do
break;
}

Loading…
Cancel
Save