Index: runtime/vm/flow_graph_compiler.cc |
diff --git a/runtime/vm/flow_graph_compiler.cc b/runtime/vm/flow_graph_compiler.cc |
index 8367316db4b53b12f8c01aa917aaeefb295551ad..e668652800e57bd2b4e06f7f0cceb8cab3df0a59 100644 |
--- a/runtime/vm/flow_graph_compiler.cc |
+++ b/runtime/vm/flow_graph_compiler.cc |
@@ -62,6 +62,7 @@ DECLARE_FLAG(int, inlining_caller_size_threshold); |
DECLARE_FLAG(int, inlining_constant_arguments_max_size_threshold); |
DECLARE_FLAG(int, inlining_constant_arguments_min_size_threshold); |
DECLARE_FLAG(int, reload_every); |
+DECLARE_FLAG(bool, unbox_numeric_fields); |
static void PrecompilationModeHandler(bool value) { |
if (value) { |
@@ -94,6 +95,7 @@ static void PrecompilationModeHandler(bool value) { |
FLAG_reorder_basic_blocks = false; |
FLAG_use_field_guards = false; |
FLAG_use_cha_deopt = false; |
+ FLAG_unbox_numeric_fields = false; |
#if !defined(PRODUCT) && !defined(DART_PRECOMPILED_RUNTIME) |
// Set flags affecting runtime accordingly for dart_noopt. |
@@ -1144,7 +1146,8 @@ bool FlowGraphCompiler::TryIntrinsify() { |
*return_node.value()->AsLoadInstanceFieldNode(); |
// Only intrinsify getter if the field cannot contain a mutable double. |
// Reading from a mutable double box requires allocating a fresh double. |
- if (!IsPotentialUnboxedField(load_node.field())) { |
+ if (FLAG_precompiled_mode || |
+ !IsPotentialUnboxedField(load_node.field())) { |
GenerateInlinedGetter(load_node.field().Offset()); |
return !FLAG_use_field_guards; |
} |
@@ -1159,7 +1162,8 @@ bool FlowGraphCompiler::TryIntrinsify() { |
ASSERT(sequence_node.NodeAt(1)->IsReturnNode()); |
const StoreInstanceFieldNode& store_node = |
*sequence_node.NodeAt(0)->AsStoreInstanceFieldNode(); |
- if (store_node.field().guarded_cid() == kDynamicCid) { |
+ if (FLAG_precompiled_mode || |
+ (store_node.field().guarded_cid() == kDynamicCid)) { |
GenerateInlinedSetter(store_node.field().Offset()); |
return !FLAG_use_field_guards; |
} |