Index: runtime/vm/constants_dbc.h |
diff --git a/runtime/vm/constants_dbc.h b/runtime/vm/constants_dbc.h |
index 665335cf00db0b7dcf0fddc71d9e612270a65ed9..e2ea8042e0963bfc0492bffef567efd0b4b958d7 100644 |
--- a/runtime/vm/constants_dbc.h |
+++ b/runtime/vm/constants_dbc.h |
@@ -188,6 +188,11 @@ namespace dart { |
// the immediately following instruction is skipped. These instructions |
// expect their operands to be Smis, but don't check that they are. |
// |
+// - Min, Max rA, rB, rC |
+// |
+// FP[rA] <- {min, max}(FP[rB], FP[rC]). Assumes that FP[rB], and FP[rC] are |
+// Smis. |
+// |
// - DAdd, DSub, DMul, DDiv rA, rB, rC |
// |
// Arithmetic operaions on unboxed doubles. FP[rA] <- FP[rB] op FP[rC]. |
@@ -201,6 +206,15 @@ namespace dart { |
// |
// FP[rA] <- -FP[rD]. Assumes FP[rD] is an unboxed double. |
// |
+// - DSqrt rA, rD |
+// |
+// FP[rA] <- sqrt(FP[rD]). Assumes FP[rD] is an unboxed double. |
+// |
+// - DMin, DMax rA, rB, rC |
+// |
+// FP[rA] <- {min, max}(FP[rB], FP[rC]). Assumes FP[rB] and FP[rC] are |
+// unboxed doubles. |
+// |
// - BitOr, BitAnd, BitXor rA, rB, rC |
// |
// FP[rA] <- FP[rB] op FP[rC]. These instructions expect their operands to be |
@@ -228,6 +242,12 @@ namespace dart { |
// |
// Convert the Smi in FP[rD] to an unboxed double in FP[rA]. |
// |
+// - DoubleToSmi rA, rD |
+// |
+// If the unboxed double in FP[rD] can be converted to a Smi in FP[rA], then |
+// this instruction does so, and skips the following instruction. Otherwise, |
+// the following instruction is not skipped. |
+// |
// - StoreStaticT`OS D |
// |
// Stores TOS into the static field PP[D]. |
@@ -563,15 +583,21 @@ 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(Min, A_B_C, reg, reg, reg) \ |
+ V(Max, A_B_C, reg, 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(DoubleToSmi, 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(DSqrt, A_D, reg, reg, ___) \ |
+ V(DMin, A_B_C, reg, reg, reg) \ |
+ V(DMax, A_B_C, reg, reg, reg) \ |
V(StoreStaticTOS, D, lit, ___, ___) \ |
V(PushStatic, D, lit, ___, ___) \ |
V(InitStaticTOS, 0, ___, ___, ___) \ |