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

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
« no previous file with comments | « runtime/vm/flow_graph_compiler_x64.cc ('k') | runtime/vm/intermediate_language.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/flow_graph_optimizer.cc
diff --git a/runtime/vm/flow_graph_optimizer.cc b/runtime/vm/flow_graph_optimizer.cc
index 6cdc56e498daec98ddd41f4964fba01780722efc..6772ffd086d2fec0ed956353d862b1d5973dd0f0 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;
@@ -1176,6 +1183,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;
@@ -1300,6 +1311,7 @@ bool FlowGraphOptimizer::InlineSetIndexed(
case kTypedDataUint16ArrayCid:
case kTypedDataInt32ArrayCid:
case kTypedDataUint32ArrayCid:
+ case kTypedDataInt64ArrayCid:
ASSERT(value_type.IsIntType());
// Fall through.
case kTypedDataFloat32ArrayCid:
@@ -1460,6 +1472,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:
@@ -1491,6 +1508,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()) {
« no previous file with comments | « runtime/vm/flow_graph_compiler_x64.cc ('k') | runtime/vm/intermediate_language.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698