Index: runtime/vm/assembler_mips.h |
diff --git a/runtime/vm/assembler_mips.h b/runtime/vm/assembler_mips.h |
index fbc52dc2031c0cf8bc35b788aa25989915ef4823..46219dda9ed25de3d7bdfcbdc57cebcecec64e1a 100644 |
--- a/runtime/vm/assembler_mips.h |
+++ b/runtime/vm/assembler_mips.h |
@@ -856,7 +856,9 @@ class Assembler : public ValueObject { |
const uint16_t low = Utils::Low16Bits(value); |
const uint16_t high = Utils::High16Bits(value); |
lui(rd, Immediate(high)); |
- ori(rd, rd, Immediate(low)); |
+ if (low != 0) { |
+ ori(rd, rd, Immediate(low)); |
+ } |
} |
} |
@@ -1125,6 +1127,10 @@ class Assembler : public ValueObject { |
sll(reg, reg, kSmiTagSize); |
} |
+ void SmiTag(Register dst, Register src) { |
+ sll(dst, src, kSmiTagSize); |
+ } |
+ |
void SmiUntag(Register reg) { |
sra(reg, reg, kSmiTagSize); |
} |