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

Unified Diff: runtime/vm/constants_dbc.h

Issue 2258493004: DBC: Fixes typed data bugs. Adds unboxed int32 instructions (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Cleanup Created 4 years, 4 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
« no previous file with comments | « no previous file | runtime/vm/intermediate_language_dbc.cc » ('j') | runtime/vm/simulator_dbc.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/constants_dbc.h
diff --git a/runtime/vm/constants_dbc.h b/runtime/vm/constants_dbc.h
index 5cf7edc8304747493151a2aafa06a910b8a544f8..102d7f1fb1a942046c4002336f89989d93e4f4f8 100644
--- a/runtime/vm/constants_dbc.h
+++ b/runtime/vm/constants_dbc.h
@@ -197,10 +197,10 @@ namespace dart {
// the immediately following instruction is skipped. These instructions
// expect their operands to be Smis, but don't check that they are.
//
-// - ShrImm rA, rB, rC
+// - ShlImm rA, rB, rC
//
-// FP[rA] <- FP[rB] >> rC. Shifts the Smi in FP[rB] right by rC. rC is
-// assumed to be a legal positive number by which righ-shifting is possible.
+// FP[rA] <- FP[rB] << rC. Shifts the Smi in FP[rB] left by rC. rC is
+// assumed to be a legal positive number by which left-shifting is possible.
//
// - Min, Max rA, rB, rC
//
@@ -243,6 +243,20 @@ namespace dart {
// FP[rD] is not a double or a Smi. When FP[rD] is a Smi, converts it to a
// double.
//
+// - UnboxInt32 rA, rB, C
+//
+// Unboxes the integer in FP[rB] into FP[rA]. If C == 1, the value may be
+// truncated. If FP[rA] is successfully unboxed the following instruction is
+// skipped.
+//
+// - BoxInt32 rA, rD
+//
+// Boxes the unboxed signed 32-bit integer in FP[rD] into FP[rA].
+//
+// - BoxUint32 rA, rD
+//
+// Boxes the unboxed unsigned 32-bit integer in FP[rD] into FP[rA].
+//
// - SmiToDouble rA, rD
//
// Convert the Smi in FP[rD] to an unboxed double in FP[rA].
@@ -607,7 +621,7 @@ namespace dart {
V(Mod, A_B_C, reg, reg, reg) \
V(Shl, A_B_C, reg, reg, reg) \
V(Shr, A_B_C, reg, reg, reg) \
- V(ShrImm, A_B_C, reg, reg, num) \
+ V(ShlImm, A_B_C, reg, reg, num) \
V(Neg, A_D, reg, reg, ___) \
V(BitOr, A_B_C, reg, reg, reg) \
V(BitAnd, A_B_C, reg, reg, reg) \
@@ -618,6 +632,9 @@ namespace dart {
V(WriteIntoDouble, A_D, reg, reg, ___) \
V(UnboxDouble, A_D, reg, reg, ___) \
V(CheckedUnboxDouble, A_D, reg, reg, ___) \
+ V(UnboxInt32, A_B_C, reg, reg, num) \
+ V(BoxInt32, A_D, reg, reg, ___) \
+ V(BoxUint32, A_D, reg, reg, ___) \
V(SmiToDouble, A_D, reg, reg, ___) \
V(DoubleToSmi, A_D, reg, reg, ___) \
V(DAdd, A_B_C, reg, reg, reg) \
@@ -666,10 +683,13 @@ namespace dart {
V(StoreIndexed, A_B_C, reg, reg, reg) \
V(StoreIndexedUint8, A_B_C, reg, reg, reg) \
V(StoreIndexedExternalUint8, A_B_C, reg, reg, reg) \
+ V(StoreIndexedUint32, A_B_C, reg, reg, reg) \
V(StoreIndexedFloat64, A_B_C, reg, reg, reg) \
V(LoadIndexed, A_B_C, reg, reg, reg) \
V(LoadIndexedUint8, A_B_C, reg, reg, reg) \
V(LoadIndexedInt8, A_B_C, reg, reg, reg) \
+ V(LoadIndexedInt32, A_B_C, reg, reg, reg) \
+ V(LoadIndexedUint32, A_B_C, reg, reg, reg) \
V(LoadIndexedExternalUint8, A_B_C, reg, reg, reg) \
V(LoadIndexedExternalInt8, A_B_C, reg, reg, reg) \
V(LoadIndexedFloat64, A_B_C, reg, reg, reg) \
« no previous file with comments | « no previous file | runtime/vm/intermediate_language_dbc.cc » ('j') | runtime/vm/simulator_dbc.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698