Index: src/mips/macro-assembler-mips.h |
diff --git a/src/mips/macro-assembler-mips.h b/src/mips/macro-assembler-mips.h |
index 304c124f5cdc38d7d11ed08dc1934a007430ac0d..24dfceb05eb7225e9c395a2206f820b370a18590 100644 |
--- a/src/mips/macro-assembler-mips.h |
+++ b/src/mips/macro-assembler-mips.h |
@@ -1242,22 +1242,25 @@ class MacroAssembler: public Assembler { |
sra(dst, src, kSmiTagSize); |
} |
+ // Untag the source value into destination and jump if source is a smi. |
+ // Souce and destination can be the same register. |
+ void UntagAndJumpIfSmi(Register dst, Register src, Label* smi_case); |
+ |
+ // Untag the source value into destination and jump if source is not a smi. |
+ // Souce and destination can be the same register. |
+ void UntagAndJumpIfNotSmi(Register dst, Register src, Label* non_smi_case); |
+ |
// Jump the register contains a smi. |
- inline void JumpIfSmi(Register value, Label* smi_label, |
- Register scratch = at, |
- BranchDelaySlot bd = PROTECT) { |
- ASSERT_EQ(0, kSmiTag); |
- andi(scratch, value, kSmiTagMask); |
- Branch(bd, smi_label, eq, scratch, Operand(zero_reg)); |
- } |
+ void JumpIfSmi(Register value, |
+ Label* smi_label, |
+ Register scratch = at, |
+ BranchDelaySlot bd = PROTECT); |
// Jump if the register contains a non-smi. |
- inline void JumpIfNotSmi(Register value, Label* not_smi_label, |
- Register scratch = at) { |
- ASSERT_EQ(0, kSmiTag); |
- andi(scratch, value, kSmiTagMask); |
- Branch(not_smi_label, ne, scratch, Operand(zero_reg)); |
- } |
+ void JumpIfNotSmi(Register value, |
+ Label* not_smi_label, |
+ Register scratch = at, |
+ BranchDelaySlot bd = PROTECT); |
// Jump if either of the registers contain a non-smi. |
void JumpIfNotBothSmi(Register reg1, Register reg2, Label* on_not_both_smi); |