| Index: src/macro-assembler-arm.cc
|
| diff --git a/src/macro-assembler-arm.cc b/src/macro-assembler-arm.cc
|
| index 7016145bff880ee6cf7907d3acdbae0e77e995d9..5cbeae9124c3a01c5aa2e16366b1c505cb7a6cc0 100644
|
| --- a/src/macro-assembler-arm.cc
|
| +++ b/src/macro-assembler-arm.cc
|
| @@ -176,6 +176,20 @@ void MacroAssembler::Ret() {
|
| }
|
|
|
|
|
| +void MacroAssembler::SmiJumpTable(Register index, Vector<Label*> targets) {
|
| + // Empty the const pool.
|
| + CheckConstPool(true, true);
|
| + add(pc, pc, Operand(index,
|
| + LSL,
|
| + assembler::arm::Instr::kInstrSizeLog2 - kSmiTagSize));
|
| + BlockConstPoolBefore(pc_offset() + (targets.length() + 1) * sizeof(Instr));
|
| + nop(); // Jump table alignment.
|
| + for (int i = 0; i < targets.length(); i++) {
|
| + b(targets[i]);
|
| + }
|
| +}
|
| +
|
| +
|
| // Will clobber 4 registers: object, offset, scratch, ip. The
|
| // register 'object' contains a heap object pointer. The heap object
|
| // tag is shifted away.
|
|
|