Chromium Code Reviews| 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, ___, ___, ___) \ |