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

Unified Diff: runtime/vm/flow_graph_optimizer.cc

Issue 626223002: Add unboxed Mint for X64 (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 2 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/flow_graph_optimizer.cc
diff --git a/runtime/vm/flow_graph_optimizer.cc b/runtime/vm/flow_graph_optimizer.cc
index f5333546f2ed98d51cc45fded39181aab427b875..2479ed0e257d393c1b5e09c27ecdbe2fc7374afd 100644
--- a/runtime/vm/flow_graph_optimizer.cc
+++ b/runtime/vm/flow_graph_optimizer.cc
@@ -63,6 +63,13 @@ static bool CanUnboxDouble() {
}
+static bool ShouldInlineInt64ArrayOps() {
+#if defined(TARGET_ARCH_X64)
+ return true;
+#endif
+ return false;
+}
+
static bool CanConvertUnboxedMintToDouble() {
#if defined(TARGET_ARCH_IA32)
return true;
@@ -1173,6 +1180,10 @@ static intptr_t MethodKindToCid(MethodRecognizer::Kind kind) {
case MethodRecognizer::kUint32ArraySetIndexed:
return kTypedDataUint32ArrayCid;
+ case MethodRecognizer::kInt64ArrayGetIndexed:
+ case MethodRecognizer::kInt64ArraySetIndexed:
+ return kTypedDataInt64ArrayCid;
+
case MethodRecognizer::kFloat32x4ArrayGetIndexed:
case MethodRecognizer::kFloat32x4ArraySetIndexed:
return kTypedDataFloat32x4ArrayCid;
@@ -1297,6 +1308,7 @@ bool FlowGraphOptimizer::InlineSetIndexed(
case kTypedDataUint16ArrayCid:
case kTypedDataInt32ArrayCid:
case kTypedDataUint32ArrayCid:
+ case kTypedDataInt64ArrayCid:
ASSERT(value_type.IsIntType());
// Fall through.
case kTypedDataFloat32ArrayCid:
@@ -1452,6 +1464,11 @@ bool FlowGraphOptimizer::TryInlineRecognizedMethod(intptr_t receiver_cid,
if (!CanUnboxInt32()) return false;
return InlineGetIndexed(kind, call, receiver, ic_data, entry, last);
+ case MethodRecognizer::kInt64ArrayGetIndexed:
+ if (!ShouldInlineInt64ArrayOps()) {
+ return false;
+ }
+ return InlineGetIndexed(kind, call, receiver, ic_data, entry, last);
// Recognized []= operators.
case MethodRecognizer::kObjectArraySetIndexed:
case MethodRecognizer::kGrowableArraySetIndexed:
@@ -1483,6 +1500,12 @@ bool FlowGraphOptimizer::TryInlineRecognizedMethod(intptr_t receiver_cid,
}
return InlineSetIndexed(kind, target, call, receiver, token_pos,
&ic_data, value_check, entry, last);
+ case MethodRecognizer::kInt64ArraySetIndexed:
+ if (!ShouldInlineInt64ArrayOps()) {
+ return false;
+ }
+ return InlineSetIndexed(kind, target, call, receiver, token_pos,
+ &ic_data, value_check, entry, last);
case MethodRecognizer::kFloat32ArraySetIndexed:
case MethodRecognizer::kFloat64ArraySetIndexed:
if (!CanUnboxDouble()) {

Powered by Google App Engine
This is Rietveld 408576698