Chromium Code Reviews| Index: runtime/vm/simulator_dbc.cc |
| diff --git a/runtime/vm/simulator_dbc.cc b/runtime/vm/simulator_dbc.cc |
| index a85f26d7cf5f3f0078645e224c7cf2c80d91cec7..8c7bfcc2a947edb5c11502ffaddc93a2121f2422 100644 |
| --- a/runtime/vm/simulator_dbc.cc |
| +++ b/runtime/vm/simulator_dbc.cc |
| @@ -3254,6 +3254,17 @@ RawObject* Simulator::Call(const Code& code, |
| } |
| { |
| + BYTECODE(CheckClassIdRange, A_B_C); |
| + const intptr_t actual_cid = |
| + reinterpret_cast<intptr_t>(FP[rA]) >> kSmiTagSize; |
| + const uintptr_t cid_start = rB; |
| + const uintptr_t cid_end = rC; |
| + // Unsigned comparison. |
| + pc += (actual_cid - cid_start <= cid_end + 1u - cid_start) ? 1 : 0; |
|
kustermann
2017/05/18 09:59:45
If
[cid_start, cid_end] = [0, 1]
actual_cid =
erikcorry
2017/05/18 14:25:30
Oops, fixed.
|
| + DISPATCH(); |
| + } |
| + |
| + { |
| BYTECODE(CheckBitTest, A_D); |
| const intptr_t raw_value = reinterpret_cast<intptr_t>(FP[rA]); |
| const bool is_smi = ((raw_value & kSmiTagMask) == kSmiTag); |