Index: runtime/vm/constants_dbc.h |
diff --git a/runtime/vm/constants_dbc.h b/runtime/vm/constants_dbc.h |
index 49d2910932fec5d6db547d400bf1158cb8c9349a..37321516a84d839d1a3b695f2cd77a6e8d0ab16d 100644 |
--- a/runtime/vm/constants_dbc.h |
+++ b/runtime/vm/constants_dbc.h |
@@ -170,7 +170,17 @@ namespace dart { |
// The function is looked up in the IC data encoded in the following 2*D |
// Nop instructions. The Nop instructions should be arranged in pairs with |
// the first being the cid, and the second being the function to push if |
-// the cid is the cid of the receiver found at SP[-(1 + ArgC)]. |
+// the cid matches the cid in the pair. |
+// |
+// - PushPolymorphic3InstanceCall ArgC, D |
Vyacheslav Egorov (Google)
2017/03/10 10:31:30
Better call it
PushPolymorphicInstanceCallByRang
erikcorry
2017/03/10 13:30:01
Done.
|
+// |
+// Skips 3*D + 1 instructions and pushes a function object onto the stack |
+// if one can be found as follows. Otherwise skips only 3*D instructions. |
+// The function is looked up in the IC data encoded in the following 3*D |
+// Nop instructions. The Nop instructions should be arranged in triples with |
+// the first being the start cid, the second being the number of cids, and |
+// the third being the function to push if the cid is in the range given |
+// by the first two Nop instructions. |
// |
// - OneByteStringFromCharCode rA, rX |
// |
@@ -590,6 +600,14 @@ namespace dart { |
// 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. |
// |
+// - CheckCids2 rA, rB, rC |
Vyacheslav Egorov (Google)
2017/03/10 10:31:30
Better call it CheckCidRanges
erikcorry
2017/03/10 13:30:01
Done.
|
+// |
+// 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 cid ranges encoded by the |
+// following rC Nop instructions. The cid ranges from a inclusive to b |
+// exclusive are coded in pairs of (a, b - a). Otherwise skips only 2 |
+// instructions. |
+// |
// - CheckStack |
// |
// Compare SP against isolate stack limit and call StackOverflow handler if |
@@ -678,6 +696,7 @@ namespace dart { |
V(InstanceCall1Opt, A_D, num, num, ___) \ |
V(InstanceCall2Opt, A_D, num, num, ___) \ |
V(PushPolymorphicInstanceCall, A_D, num, num, ___) \ |
+ V(PushPolymorphic3InstanceCall, A_D, num, num, ___) \ |
V(NativeCall, 0, ___, ___, ___) \ |
V(NativeBootstrapCall, 0, ___, ___, ___) \ |
V(OneByteStringFromCharCode, A_X, reg, xeg, ___) \ |
@@ -820,6 +839,7 @@ namespace dart { |
V(CheckClassId, A_D, reg, num, ___) \ |
V(CheckDenseSwitch, A_D, reg, num, ___) \ |
V(CheckCids, A_B_C, reg, num, num) \ |
+ V(CheckCids2, A_B_C, reg, num, num) \ |
V(CheckStack, 0, ___, ___, ___) \ |
V(CheckStackAlwaysExit, 0, ___, ___, ___) \ |
V(DebugStep, 0, ___, ___, ___) \ |