Chromium Code Reviews| Index: runtime/vm/assembler_mips.h |
| =================================================================== |
| --- runtime/vm/assembler_mips.h (revision 20794) |
| +++ runtime/vm/assembler_mips.h (working copy) |
| @@ -515,6 +515,15 @@ |
| jr(TMP); |
| } |
| + void BranchPatchable(const ExternalLabel* label) { |
| + const uint16_t low = Utils::Low16Bits(label->address()); |
| + const uint16_t high = Utils::High16Bits(label->address()); |
| + lui(TMP, Immediate(high)); |
| + ori(TMP, TMP, Immediate(low)); |
| + jr(TMP); |
| + delay_slot()->nop(); |
|
regis
2013/04/02 20:40:51
This works, but there is already a nop in the dela
|
| + } |
| + |
| void BranchLink(const ExternalLabel* label) { |
| LoadImmediate(TMP, label->address()); |
| jalr(TMP); |
| @@ -525,6 +534,7 @@ |
| Array::data_offset() + 4*AddExternalLabel(label) - kHeapObjectTag; |
| LoadWordFromPoolOffset(TMP, offset); |
| jalr(TMP); |
| + delay_slot()->nop(); |
|
regis
2013/04/02 20:40:51
ditto
|
| } |
| // If the signed value in rs is less than value, rd is 1, and 0 otherwise. |