Chromium Code Reviews| Index: runtime/vm/constants_dbc.h |
| diff --git a/runtime/vm/constants_dbc.h b/runtime/vm/constants_dbc.h |
| index 4f8aab93ec22373f9d82a148e12da85e519ef39f..07cf46f32faee20e5729369f6ed3103ff06a41b9 100644 |
| --- a/runtime/vm/constants_dbc.h |
| +++ b/runtime/vm/constants_dbc.h |
| @@ -83,9 +83,10 @@ namespace dart { |
| // |
| // Unreachable instruction. |
| // |
| -// - Nop |
| +// - Nop D |
| // |
| -// This instuction does nothing. |
| +// This instuction does nothing. It may refer to an object in the constant |
| +// pool that may be decoded by other instructions. |
| // |
| // - Compile |
| // |
| @@ -212,6 +213,11 @@ namespace dart { |
| // IfNeStrictTOS |
| // Jump T ;; jump if not equal |
| // |
| +// - If<Cond>Null rA |
| +// |
| +// Cond is Eq or Ne. Skips the next instruction unless the given condition |
| +// holds. |
| +// |
| // - CreateArrayTOS |
| // |
| // Allocate array of length SP[0] with type arguments SP[-1]. |
| @@ -358,6 +364,25 @@ namespace dart { |
| // If the object at FP[rA]'s class id matches hthe class id in PP[D], then |
| // skip the following instruction. |
| // |
| +// - CheckDenseSwitch rA, D |
| +// |
| +// Skips the next 3 instructions if the object at FP[rA] is a valid class for |
| +// a dense switch with low cid encoded in the following Nop instruction, and |
| +// the cid mask encoded in the Nop instruction after that, or if D == 1 and |
| +// FP[rA] is a Smi. Skips 2 instructions otherwise. |
| +// |
| +// - CheckCid rA, D |
|
Vyacheslav Egorov (Google)
2016/06/29 17:11:06
32bit build allocates only 16bits for a CID. I thi
zra
2016/06/29 22:19:17
Done.
|
| +// |
| +// Skips the next two instructions if the object at FP[rA] is a Smi and |
| +// D == 1, or if FP[rA] has cid equal to the cid encoded by the following |
| +// Nop instruction. Otherwise skips 1 instruction. |
| +// |
| +// - CheckCids rA, D |
| +// |
| +// Skips the next two instructions if the object at FP[rA] is a Smi and |
| +// D == 1, or if FP[rA]'s cid is found in the array of cids encoded by the |
| +// following Nop instruction. Otherwise skips 1 instruction. |
| +// |
| // - CheckStack |
| // |
| // Compare SP against isolate stack limit and call StackOverflow handler if |
| @@ -420,7 +445,7 @@ namespace dart { |
| // |
| #define BYTECODES_LIST(V) \ |
| V(Trap, 0, ___, ___, ___) \ |
| - V(Nop, 0, ___, ___, ___) \ |
| + V(Nop, D, lit, ___, ___) \ |
| V(Compile, 0, ___, ___, ___) \ |
| V(HotCheck, A_D, num, num, ___) \ |
| V(Intrinsic, A, num, ___, ___) \ |
| @@ -477,6 +502,8 @@ namespace dart { |
| V(IfEqStrict, A_D, reg, reg, ___) \ |
| V(IfNeStrictNum, A_D, reg, reg, ___) \ |
| V(IfEqStrictNum, A_D, reg, reg, ___) \ |
| + V(IfEqNull, A, reg, ___, ___) \ |
| + V(IfNeNull, A, reg, ___, ___) \ |
| V(CreateArrayTOS, 0, ___, ___, ___) \ |
| V(Allocate, D, lit, ___, ___) \ |
| V(AllocateT, 0, ___, ___, ___) \ |
| @@ -503,6 +530,9 @@ namespace dart { |
| V(AssertBoolean, A, num, ___, ___) \ |
| V(CheckSmi, A, reg, ___, ___) \ |
| V(CheckClassId, A_D, reg, lit, ___) \ |
| + V(CheckDenseSwitch, A_D, reg, num, ___) \ |
| + V(CheckCid, A_D, reg, num, ___) \ |
| + V(CheckCids, A_D, reg, num, ___) \ |
| V(CheckStack, 0, ___, ___, ___) \ |
| V(DebugStep, 0, ___, ___, ___) \ |
| V(DebugBreak, A, num, ___, ___) \ |