Index: runtime/vm/constants_dbc.h |
diff --git a/runtime/vm/constants_dbc.h b/runtime/vm/constants_dbc.h |
index 02d86888895143cace97b15c664afd4670ed97a6..597dd8cfa27fff5936da4aaf133e35d21a580c58 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 |
// |
@@ -222,6 +223,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]. |
@@ -371,8 +377,21 @@ namespace dart { |
// |
// - CheckClassId rA, D |
// |
-// If the object at FP[rA]'s class id matches hthe class id in PP[D], then |
-// skip the following instruction. |
+// If the object at FP[rA]'s class id matches the class id 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. |
+// |
+// - CheckCids rA, rB, rC |
+// |
+// Skips rC + 1 instructions if the object at FP[rA] is a Smi and |
+// rB == 1, or if FP[rA]'s cid is found in the array of cids encoded by the |
+// following rC Nop instructions. Otherwise skips only rC instructions. |
// |
// - CheckStack |
// |
@@ -436,7 +455,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, ___, ___) \ |
@@ -495,6 +514,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, ___, ___, ___) \ |
@@ -521,7 +542,9 @@ namespace dart { |
V(AssertAssignable, D, num, lit, ___) \ |
V(AssertBoolean, A, num, ___, ___) \ |
V(CheckSmi, A, reg, ___, ___) \ |
- V(CheckClassId, A_D, reg, lit, ___) \ |
+ V(CheckClassId, A_D, reg, num, ___) \ |
+ V(CheckDenseSwitch, A_D, reg, num, ___) \ |
+ V(CheckCids, A_B_C, reg, num, ___) \ |
V(CheckStack, 0, ___, ___, ___) \ |
V(DebugStep, 0, ___, ___, ___) \ |
V(DebugBreak, A, num, ___, ___) \ |