Browse Source

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

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

12
libevmjit/Compiler.cpp

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

Loading…
Cancel
Save