| Index: runtime/vm/constants_dbc.h
|
| diff --git a/runtime/vm/constants_dbc.h b/runtime/vm/constants_dbc.h
|
| index a15058d4e207bc23bd26886e6b6ea43c00f0c118..dddbcf9948887cbe6e50f8b538e02f1370dba0dc 100644
|
| --- a/runtime/vm/constants_dbc.h
|
| +++ b/runtime/vm/constants_dbc.h
|
| @@ -183,11 +183,19 @@ namespace dart {
|
| // the immediately following instruction is skipped. These instructions
|
| // expect their operands to be Smis, but don't check that they are.
|
| //
|
| +// - DAdd, DSub, DMul, DDiv rA, rB, rC
|
| +//
|
| +// Arithmetic operaions on unboxed doubles. FP[rA] <- FP[rB] op FP[rC].
|
| +//
|
| // - Neg rA , rD
|
| //
|
| // FP[rA] <- -FP[rD]. Assumes FP[rD] is a Smi. If there is no overflow the
|
| // immediately following instruction is skipped.
|
| //
|
| +// - DNeg rA, rD
|
| +//
|
| +// FP[rA] <- -FP[rD]. Assumes FP[rD] is an unboxed double.
|
| +//
|
| // - BitOr, BitAnd, BitXor rA, rB, rC
|
| //
|
| // FP[rA] <- FP[rB] op FP[rC]. These instructions expect their operands to be
|
| @@ -197,6 +205,24 @@ namespace dart {
|
| //
|
| // FP[rA] <- ~FP[rD]. As above, assumes FP[rD] is a Smi.
|
| //
|
| +// - WriteIntoDouble rA, rD
|
| +//
|
| +// Box the double in FP[rD] with the result in FP[rA].
|
| +//
|
| +// - UnboxDouble rA, rD
|
| +//
|
| +// Unbox the double in FP[rD] into FP[rA]. Assumes FP[rD] is a double.
|
| +//
|
| +// - CheckedUnboxDouble rA, rD
|
| +//
|
| +// Unboxes FP[rD] into FP[rA] and skips the following instruction unless
|
| +// FP[rD] is not a double or a Smi. When FP[rD] is a Smi, converts it to a
|
| +// double.
|
| +//
|
| +// - SmiToDouble rA, rD
|
| +//
|
| +// Convert the Smi in FP[rD] to an unboxed double in FP[rA].
|
| +//
|
| // - StoreStaticT`OS D
|
| //
|
| // Stores TOS into the static field PP[D].
|
| @@ -230,9 +256,10 @@ namespace dart {
|
| //
|
| // - If<Cond> rA, rD
|
| //
|
| -// Cond is Le, Lt, Ge, Gt, or unsigned variants ULe, ULt, UGe, UGt.
|
| +// Cond is Le, Lt, Ge, Gt, unsigned variants ULe, ULt, UGe, UGt, and
|
| +// unboxed double variants DEq, DNe, DLe, DLt, DGe, DGt.
|
| // Skips the next instruction unless FP[rA] <Cond> FP[rD]. Assumes that
|
| -// FP[rA] and FP[rD] are Smis.
|
| +// FP[rA] and FP[rD] are Smis or unboxed doubles as inidcated by <Cond>.
|
| //
|
| // - CreateArrayTOS
|
| //
|
| @@ -398,9 +425,13 @@ namespace dart {
|
| //
|
| // If FP[rA] is a Smi, then skip the next instruction.
|
| //
|
| +// - CheckEitherNonSmi rA, rD
|
| +//
|
| +// If either FP[rA] or FP[rD] is not a Smi, then skip the next instruction.
|
| +//
|
| // - CheckClassId rA, D
|
| //
|
| -// If the object at FP[rA]'s class id matches the class id D, then skip the
|
| +// If the class id in FP[rA] matches the class id D, then skip the
|
| // following instruction.
|
| //
|
| // - CheckDenseSwitch rA, D
|
| @@ -526,6 +557,15 @@ namespace dart {
|
| V(BitAnd, A_B_C, reg, reg, reg) \
|
| V(BitXor, A_B_C, reg, reg, reg) \
|
| V(BitNot, A_D, reg, reg, ___) \
|
| + V(WriteIntoDouble, A_D, reg, reg, ___) \
|
| + V(UnboxDouble, A_D, reg, reg, ___) \
|
| + V(CheckedUnboxDouble, A_D, reg, reg, ___) \
|
| + V(SmiToDouble, A_D, reg, reg, ___) \
|
| + V(DAdd, A_B_C, reg, reg, reg) \
|
| + V(DSub, A_B_C, reg, reg, reg) \
|
| + V(DMul, A_B_C, reg, reg, reg) \
|
| + V(DDiv, A_B_C, reg, reg, reg) \
|
| + V(DNeg, A_D, reg, reg, ___) \
|
| V(StoreStaticTOS, D, lit, ___, ___) \
|
| V(PushStatic, D, lit, ___, ___) \
|
| V(InitStaticTOS, 0, ___, ___, ___) \
|
| @@ -543,6 +583,12 @@ namespace dart {
|
| V(IfULt, A_D, reg, reg, ___) \
|
| V(IfUGe, A_D, reg, reg, ___) \
|
| V(IfUGt, A_D, reg, reg, ___) \
|
| + V(IfDNe, A_D, reg, reg, ___) \
|
| + V(IfDEq, A_D, reg, reg, ___) \
|
| + V(IfDLe, A_D, reg, reg, ___) \
|
| + V(IfDLt, A_D, reg, reg, ___) \
|
| + V(IfDGe, A_D, reg, reg, ___) \
|
| + V(IfDGt, A_D, reg, reg, ___) \
|
| V(IfNeStrictNum, A_D, reg, reg, ___) \
|
| V(IfEqStrictNum, A_D, reg, reg, ___) \
|
| V(IfEqNull, A, reg, ___, ___) \
|
| @@ -576,6 +622,7 @@ namespace dart {
|
| V(TestSmi, A_D, reg, reg, ___) \
|
| V(TestCids, A_D, reg, num, ___) \
|
| V(CheckSmi, A, reg, ___, ___) \
|
| + V(CheckEitherNonSmi, A_D, reg, reg, ___) \
|
| V(CheckClassId, A_D, reg, num, ___) \
|
| V(CheckDenseSwitch, A_D, reg, num, ___) \
|
| V(CheckCids, A_B_C, reg, num, ___) \
|
|
|