Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(267)

Unified Diff: runtime/vm/constants_dbc.h

Issue 2737303003: Allow dispatch to use a range of Class-ids in tests (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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, ___, ___, ___) \

Powered by Google App Engine
This is Rietveld 408576698