Index: runtime/vm/flow_graph_optimizer.cc |
=================================================================== |
--- runtime/vm/flow_graph_optimizer.cc (revision 17160) |
+++ runtime/vm/flow_graph_optimizer.cc (working copy) |
@@ -1311,9 +1311,14 @@ |
} |
if ((recognized_kind == MethodRecognizer::kDoubleTruncate) || |
(recognized_kind == MethodRecognizer::kDoubleRound)) { |
+#if defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64) |
+ // TODO(regis): FlowGraphOptimizer should be architecture dependent. |
if (!CPUFeatures::sse4_1_supported()) { |
return false; |
} |
+#else |
+ return false; |
+#endif |
AddCheckClass(call, call->ArgumentAt(0)->value()->Copy()); |
DoubleToDoubleInstr* d2d_instr = |
new DoubleToDoubleInstr(call->ArgumentAt(0)->value(), |
@@ -2001,11 +2006,20 @@ |
GrowableArray<Definition*> worklist_; |
BitVector* marked_defns_; |
- class ArrayLengthData : public ValueObject { |
+ class ArrayLengthData { |
public: |
ArrayLengthData(Definition* array, Definition* array_length) |
: array_(array), array_length_(array_length) { } |
+ ArrayLengthData(const ArrayLengthData& other) |
+ : array_(other.array_), array_length_(other.array_length_) { } |
+ |
+ ArrayLengthData& operator=(const ArrayLengthData& other) { |
+ array_ = other.array_; |
+ array_length_ = other.array_length_; |
+ return *this; |
+ } |
+ |
Definition* array() const { return array_; } |
Definition* array_length() const { return array_length_; } |