[vm] Remove obsolete --[no-]unbox_doubles flag

All our target platforms support unboxed doubles and this obsolete
option is no longer used.

TEST=ci

Change-Id: I1d9214b49e875bc52e4f25650dacf8446a2e40a4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/371980
Reviewed-by: Siva Annamalai <asiva@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
This commit is contained in:
Alexander Markov 2024-06-17 22:45:59 +00:00 committed by Commit Queue
parent 6226568fa5
commit 4d3689138e
18 changed files with 31 additions and 127 deletions

View file

@ -651,10 +651,6 @@ bool AotCallSpecializer::TryOptimizeDoubleOperation(TemplateDartCall<0>* instr,
return false; return false;
} }
if (!FlowGraphCompiler::SupportsUnboxedDoubles()) {
return false;
}
Definition* replacement = nullptr; Definition* replacement = nullptr;
if (instr->ArgumentCount() == 2) { if (instr->ArgumentCount() == 2) {

View file

@ -916,8 +916,7 @@ void ConstantPropagator::VisitInstanceOf(InstanceOfInstr* instr) {
Representation rep = def->representation(); Representation rep = def->representation();
if ((checked_type.IsFloat32x4Type() && (rep == kUnboxedFloat32x4)) || if ((checked_type.IsFloat32x4Type() && (rep == kUnboxedFloat32x4)) ||
(checked_type.IsInt32x4Type() && (rep == kUnboxedInt32x4)) || (checked_type.IsInt32x4Type() && (rep == kUnboxedInt32x4)) ||
(checked_type.IsDoubleType() && (rep == kUnboxedDouble) && (checked_type.IsDoubleType() && (rep == kUnboxedDouble)) ||
FlowGraphCompiler::SupportsUnboxedDoubles()) ||
(checked_type.IsIntType() && (rep == kUnboxedInt64))) { (checked_type.IsIntType() && (rep == kUnboxedInt64))) {
// Ensure that compile time type matches representation. // Ensure that compile time type matches representation.
ASSERT(((rep == kUnboxedFloat32x4) && (value_cid == kFloat32x4Cid)) || ASSERT(((rep == kUnboxedFloat32x4) && (value_cid == kFloat32x4Cid)) ||

View file

@ -1930,10 +1930,6 @@ static bool ShouldInlineSimd() {
return FlowGraphCompiler::SupportsUnboxedSimd128(); return FlowGraphCompiler::SupportsUnboxedSimd128();
} }
static bool CanUnboxDouble() {
return FlowGraphCompiler::SupportsUnboxedDoubles();
}
static bool CanConvertInt64ToDouble() { static bool CanConvertInt64ToDouble() {
return FlowGraphCompiler::CanConvertInt64ToDouble(); return FlowGraphCompiler::CanConvertInt64ToDouble();
} }
@ -1975,7 +1971,6 @@ void FlowGraph::InsertConversion(Representation from,
const intptr_t deopt_id = (deopt_target != nullptr) const intptr_t deopt_id = (deopt_target != nullptr)
? deopt_target->DeoptimizationTarget() ? deopt_target->DeoptimizationTarget()
: DeoptId::kNone; : DeoptId::kNone;
ASSERT(CanUnboxDouble());
converted = new Int64ToDoubleInstr(use->CopyWithType(), deopt_id); converted = new Int64ToDoubleInstr(use->CopyWithType(), deopt_id);
} else if ((from == kTagged) && Boxing::Supports(to)) { } else if ((from == kTagged) && Boxing::Supports(to)) {
const intptr_t deopt_id = (deopt_target != nullptr) const intptr_t deopt_id = (deopt_target != nullptr)
@ -2129,7 +2124,6 @@ class PhiUnboxingHeuristic : public ValueObject {
auto new_representation = phi->representation(); auto new_representation = phi->representation();
switch (phi->Type()->ToCid()) { switch (phi->Type()->ToCid()) {
case kDoubleCid: case kDoubleCid:
if (CanUnboxDouble()) {
new_representation = DetermineIfAnyIncomingUnboxedFloats(phi) new_representation = DetermineIfAnyIncomingUnboxedFloats(phi)
? kUnboxedFloat ? kUnboxedFloat
: kUnboxedDouble; : kUnboxedDouble;
@ -2140,7 +2134,6 @@ class PhiUnboxingHeuristic : public ValueObject {
} }
} }
#endif #endif
}
break; break;
case kFloat32x4Cid: case kFloat32x4Cid:
if (ShouldInlineSimd()) { if (ShouldInlineSimd()) {

View file

@ -392,7 +392,6 @@ class FlowGraphCompiler : public ValueObject {
~FlowGraphCompiler(); ~FlowGraphCompiler();
static bool SupportsUnboxedDoubles();
static bool SupportsUnboxedSimd128(); static bool SupportsUnboxedSimd128();
static bool CanConvertInt64ToDouble(); static bool CanConvertInt64ToDouble();

View file

@ -26,7 +26,6 @@
namespace dart { namespace dart {
DEFINE_FLAG(bool, trap_on_deoptimization, false, "Trap on deoptimization."); DEFINE_FLAG(bool, trap_on_deoptimization, false, "Trap on deoptimization.");
DEFINE_FLAG(bool, unbox_doubles, true, "Optimize double arithmetic.");
DECLARE_FLAG(bool, enable_simd_inline); DECLARE_FLAG(bool, enable_simd_inline);
void FlowGraphCompiler::ArchSpecificInitialization() { void FlowGraphCompiler::ArchSpecificInitialization() {
@ -66,10 +65,6 @@ FlowGraphCompiler::~FlowGraphCompiler() {
} }
} }
bool FlowGraphCompiler::SupportsUnboxedDoubles() {
return FLAG_unbox_doubles;
}
bool FlowGraphCompiler::SupportsUnboxedSimd128() { bool FlowGraphCompiler::SupportsUnboxedSimd128() {
return TargetCPUFeatures::neon_supported() && FLAG_enable_simd_inline; return TargetCPUFeatures::neon_supported() && FLAG_enable_simd_inline;
} }

View file

@ -62,10 +62,6 @@ FlowGraphCompiler::~FlowGraphCompiler() {
} }
} }
bool FlowGraphCompiler::SupportsUnboxedDoubles() {
return true;
}
bool FlowGraphCompiler::SupportsUnboxedSimd128() { bool FlowGraphCompiler::SupportsUnboxedSimd128() {
return FLAG_enable_simd_inline; return FLAG_enable_simd_inline;
} }

View file

@ -41,10 +41,6 @@ FlowGraphCompiler::~FlowGraphCompiler() {
} }
} }
bool FlowGraphCompiler::SupportsUnboxedDoubles() {
return true;
}
bool FlowGraphCompiler::SupportsUnboxedSimd128() { bool FlowGraphCompiler::SupportsUnboxedSimd128() {
return FLAG_enable_simd_inline; return FLAG_enable_simd_inline;
} }

View file

@ -43,10 +43,6 @@ FlowGraphCompiler::~FlowGraphCompiler() {
} }
} }
bool FlowGraphCompiler::SupportsUnboxedDoubles() {
return true;
}
bool FlowGraphCompiler::SupportsUnboxedSimd128() { bool FlowGraphCompiler::SupportsUnboxedSimd128() {
// TODO(riscv): Dynamically test for the vector extension and otherwise // TODO(riscv): Dynamically test for the vector extension and otherwise
// allocate SIMD values to register-pairs or quads? // allocate SIMD values to register-pairs or quads?

View file

@ -63,10 +63,6 @@ FlowGraphCompiler::~FlowGraphCompiler() {
} }
} }
bool FlowGraphCompiler::SupportsUnboxedDoubles() {
return true;
}
bool FlowGraphCompiler::SupportsUnboxedSimd128() { bool FlowGraphCompiler::SupportsUnboxedSimd128() {
return FLAG_enable_simd_inline; return FLAG_enable_simd_inline;
} }

View file

@ -296,10 +296,6 @@ ISOLATE_UNIT_TEST_CASE(FlowGraph_LargeFrame_Float64x2) {
} }
ISOLATE_UNIT_TEST_CASE(FlowGraph_PhiUnboxingHeuristic_Double) { ISOLATE_UNIT_TEST_CASE(FlowGraph_PhiUnboxingHeuristic_Double) {
if (!FlowGraphCompiler::SupportsUnboxedDoubles()) {
return;
}
const char* kScript = R"( const char* kScript = R"(
double foo(double sum, int n) { double foo(double sum, int n) {
if (sum == null) return 0.0; if (sum == null) return 0.0;

View file

@ -4058,7 +4058,6 @@ UnboxInstr* UnboxInstr::Create(Representation to,
case kUnboxedFloat32x4: case kUnboxedFloat32x4:
case kUnboxedFloat64x2: case kUnboxedFloat64x2:
case kUnboxedInt32x4: case kUnboxedInt32x4:
ASSERT(FlowGraphCompiler::SupportsUnboxedDoubles());
return new UnboxInstr(to, value, deopt_id, speculative_mode); return new UnboxInstr(to, value, deopt_id, speculative_mode);
default: default:

View file

@ -30,10 +30,6 @@ static bool ShouldInlineSimd() {
return FlowGraphCompiler::SupportsUnboxedSimd128(); return FlowGraphCompiler::SupportsUnboxedSimd128();
} }
static bool CanUnboxDouble() {
return FlowGraphCompiler::SupportsUnboxedDoubles();
}
static bool CanConvertInt64ToDouble() { static bool CanConvertInt64ToDouble() {
return FlowGraphCompiler::CanConvertInt64ToDouble(); return FlowGraphCompiler::CanConvertInt64ToDouble();
} }
@ -43,11 +39,6 @@ static bool IsNumberCid(intptr_t cid) {
} }
static bool ShouldSpecializeForDouble(const BinaryFeedback& binary_feedback) { static bool ShouldSpecializeForDouble(const BinaryFeedback& binary_feedback) {
// Don't specialize for double if we can't unbox them.
if (!CanUnboxDouble()) {
return false;
}
// Unboxed double operation can't handle case of two smis. // Unboxed double operation can't handle case of two smis.
if (binary_feedback.IncludesOperands(kSmiCid)) { if (binary_feedback.IncludesOperands(kSmiCid)) {
return false; return false;
@ -394,7 +385,7 @@ bool CallSpecializer::TryReplaceWithEqualityOp(InstanceCallInstr* call,
cid = kSmiCid; cid = kSmiCid;
} else if (binary_feedback.OperandsAreSmiOrMint()) { } else if (binary_feedback.OperandsAreSmiOrMint()) {
cid = kMintCid; cid = kMintCid;
} else if (binary_feedback.OperandsAreSmiOrDouble() && CanUnboxDouble()) { } else if (binary_feedback.OperandsAreSmiOrDouble()) {
// Use double comparison. // Use double comparison.
if (SmiFitsInDouble()) { if (SmiFitsInDouble()) {
cid = kDoubleCid; cid = kDoubleCid;
@ -469,7 +460,7 @@ bool CallSpecializer::TryReplaceWithRelationalOp(InstanceCallInstr* call,
cid = kSmiCid; cid = kSmiCid;
} else if (binary_feedback.OperandsAreSmiOrMint()) { } else if (binary_feedback.OperandsAreSmiOrMint()) {
cid = kMintCid; cid = kMintCid;
} else if (binary_feedback.OperandsAreSmiOrDouble() && CanUnboxDouble()) { } else if (binary_feedback.OperandsAreSmiOrDouble()) {
// Use double comparison. // Use double comparison.
if (SmiFitsInDouble()) { if (SmiFitsInDouble()) {
cid = kDoubleCid; cid = kDoubleCid;
@ -605,9 +596,6 @@ bool CallSpecializer::TryReplaceWithBinaryOp(InstanceCallInstr* call,
Definition* left = call->ArgumentAt(0); Definition* left = call->ArgumentAt(0);
Definition* right = call->ArgumentAt(1); Definition* right = call->ArgumentAt(1);
if (operands_type == kDoubleCid) { if (operands_type == kDoubleCid) {
if (!CanUnboxDouble()) {
return false;
}
// Check that either left or right are not a smi. Result of a // Check that either left or right are not a smi. Result of a
// binary operation with two smis is a smi not a double, except '/' which // binary operation with two smis is a smi not a double, except '/' which
// returns a double for two smis. // returns a double for two smis.
@ -704,7 +692,7 @@ bool CallSpecializer::TryReplaceWithUnaryOp(InstanceCallInstr* call,
unary_op = new (Z) unary_op = new (Z)
UnaryInt64OpInstr(op_kind, new (Z) Value(input), call->deopt_id()); UnaryInt64OpInstr(op_kind, new (Z) Value(input), call->deopt_id());
} else if (call->Targets().ReceiverIs(kDoubleCid) && } else if (call->Targets().ReceiverIs(kDoubleCid) &&
(op_kind == Token::kNEGATE) && CanUnboxDouble()) { (op_kind == Token::kNEGATE)) {
AddReceiverCheck(call); AddReceiverCheck(call);
unary_op = new (Z) UnaryDoubleOpInstr(Token::kNEGATE, new (Z) Value(input), unary_op = new (Z) UnaryDoubleOpInstr(Token::kNEGATE, new (Z) Value(input),
call->deopt_id()); call->deopt_id());
@ -976,8 +964,7 @@ bool CallSpecializer::TryInlineInstanceMethod(InstanceCallInstr* call) {
intptr_t receiver_cid = targets.MonomorphicReceiverCid(); intptr_t receiver_cid = targets.MonomorphicReceiverCid();
MethodRecognizer::Kind recognized_kind = target.recognized_kind(); MethodRecognizer::Kind recognized_kind = target.recognized_kind();
if (CanUnboxDouble() && if (recognized_kind == MethodRecognizer::kIntegerToDouble) {
(recognized_kind == MethodRecognizer::kIntegerToDouble)) {
if (receiver_cid == kSmiCid) { if (receiver_cid == kSmiCid) {
AddReceiverCheck(call); AddReceiverCheck(call);
ReplaceCall(call, ReplaceCall(call,
@ -994,9 +981,6 @@ bool CallSpecializer::TryInlineInstanceMethod(InstanceCallInstr* call) {
} }
if (receiver_cid == kDoubleCid) { if (receiver_cid == kDoubleCid) {
if (!CanUnboxDouble()) {
return false;
}
switch (recognized_kind) { switch (recognized_kind) {
case MethodRecognizer::kDoubleToInteger: { case MethodRecognizer::kDoubleToInteger: {
AddReceiverCheck(call); AddReceiverCheck(call);
@ -1292,8 +1276,7 @@ void CallSpecializer::VisitStaticCall(StaticCallInstr* call) {
case MethodRecognizer::kMathMax: { case MethodRecognizer::kMathMax: {
// We can handle only monomorphic min/max call sites with both arguments // We can handle only monomorphic min/max call sites with both arguments
// being either doubles or smis. // being either doubles or smis.
if (CanUnboxDouble() && targets.IsMonomorphic() && if (targets.IsMonomorphic() && (call->FirstArgIndex() == 0)) {
(call->FirstArgIndex() == 0)) {
intptr_t result_cid = kIllegalCid; intptr_t result_cid = kIllegalCid;
if (binary_feedback.IncludesOperands(kDoubleCid)) { if (binary_feedback.IncludesOperands(kDoubleCid)) {
result_cid = kDoubleCid; result_cid = kDoubleCid;
@ -1319,7 +1302,6 @@ void CallSpecializer::VisitStaticCall(StaticCallInstr* call) {
case MethodRecognizer::kDoubleFromInteger: { case MethodRecognizer::kDoubleFromInteger: {
if (call->HasICData() && targets.IsMonomorphic() && if (call->HasICData() && targets.IsMonomorphic() &&
(call->FirstArgIndex() == 0)) { (call->FirstArgIndex() == 0)) {
if (CanUnboxDouble()) {
if (binary_feedback.ArgumentIs(kSmiCid)) { if (binary_feedback.ArgumentIs(kSmiCid)) {
Definition* arg = call->ArgumentAt(1); Definition* arg = call->ArgumentAt(1);
AddCheckSmi(arg, call->deopt_id(), call->env(), call); AddCheckSmi(arg, call->deopt_id(), call->env(), call);
@ -1334,7 +1316,6 @@ void CallSpecializer::VisitStaticCall(StaticCallInstr* call) {
return; return;
} }
} }
}
break; break;
} }
@ -1521,15 +1502,10 @@ void TypedDataSpecializer::TryInlineCall(TemplateDartCall<0>* call) {
auto const rep = auto const rep =
RepresentationUtils::RepresentationOfArrayElement(variant.array_cid); RepresentationUtils::RepresentationOfArrayElement(variant.array_cid);
const bool is_float_access = rep == kUnboxedFloat || rep == kUnboxedDouble;
const bool is_simd_access = rep == kUnboxedInt32x4 || const bool is_simd_access = rep == kUnboxedInt32x4 ||
rep == kUnboxedFloat32x4 || rep == kUnboxedFloat32x4 ||
rep == kUnboxedFloat64x2; rep == kUnboxedFloat64x2;
if (is_float_access && !FlowGraphCompiler::SupportsUnboxedDoubles()) {
return;
}
if (is_simd_access && !FlowGraphCompiler::SupportsUnboxedSimd128()) { if (is_simd_access && !FlowGraphCompiler::SupportsUnboxedSimd128()) {
return; return;
} }
@ -1984,9 +1960,6 @@ static bool InlineDoubleOp(FlowGraph* flow_graph,
FunctionEntryInstr** entry, FunctionEntryInstr** entry,
Instruction** last, Instruction** last,
Definition** result) { Definition** result) {
if (!CanUnboxDouble()) {
return false;
}
Definition* left = receiver; Definition* left = receiver;
Definition* right = call->ArgumentAt(1); Definition* right = call->ArgumentAt(1);
@ -2013,10 +1986,6 @@ static bool InlineDoubleTestOp(FlowGraph* flow_graph,
FunctionEntryInstr** entry, FunctionEntryInstr** entry,
Instruction** last, Instruction** last,
Definition** result) { Definition** result) {
if (!CanUnboxDouble()) {
return false;
}
*entry = *entry =
new (Z) FunctionEntryInstr(graph_entry, flow_graph->allocate_block_id(), new (Z) FunctionEntryInstr(graph_entry, flow_graph->allocate_block_id(),
call->GetBlock()->try_index(), DeoptId::kNone); call->GetBlock()->try_index(), DeoptId::kNone);
@ -3183,9 +3152,6 @@ bool CallSpecializer::TryInlineRecognizedMethod(
call, receiver, graph_entry, entry, last, result); call, receiver, graph_entry, entry, last, result);
case MethodRecognizer::kFloat32ArrayGetIndexed: case MethodRecognizer::kFloat32ArrayGetIndexed:
case MethodRecognizer::kFloat64ArrayGetIndexed: case MethodRecognizer::kFloat64ArrayGetIndexed:
if (!CanUnboxDouble()) {
return false;
}
return InlineGetIndexed(flow_graph, can_speculate, is_dynamic_call, kind, return InlineGetIndexed(flow_graph, can_speculate, is_dynamic_call, kind,
call, receiver, graph_entry, entry, last, result); call, receiver, graph_entry, entry, last, result);
case MethodRecognizer::kFloat32x4ArrayGetIndexed: case MethodRecognizer::kFloat32x4ArrayGetIndexed:
@ -3241,9 +3207,6 @@ bool CallSpecializer::TryInlineRecognizedMethod(
case MethodRecognizer::kFloat32ArraySetIndexed: case MethodRecognizer::kFloat32ArraySetIndexed:
case MethodRecognizer::kFloat64ArraySetIndexed: { case MethodRecognizer::kFloat64ArraySetIndexed: {
if (!CanUnboxDouble()) {
return false;
}
return InlineSetIndexed(flow_graph, kind, target, call, receiver, source, return InlineSetIndexed(flow_graph, kind, target, call, receiver, source,
exactness, graph_entry, entry, last, result); exactness, graph_entry, entry, last, result);
} }

View file

@ -869,9 +869,6 @@ Fragment FlowGraphBuilder::NativeFunctionBody(const Function& function,
static bool CanUnboxElements(classid_t cid) { static bool CanUnboxElements(classid_t cid) {
switch (RepresentationUtils::RepresentationOfArrayElement(cid)) { switch (RepresentationUtils::RepresentationOfArrayElement(cid)) {
case kUnboxedFloat:
case kUnboxedDouble:
return FlowGraphCompiler::SupportsUnboxedDoubles();
case kUnboxedInt32x4: case kUnboxedInt32x4:
case kUnboxedFloat32x4: case kUnboxedFloat32x4:
case kUnboxedFloat64x2: case kUnboxedFloat64x2:
@ -1142,10 +1139,9 @@ bool FlowGraphBuilder::IsRecognizedMethodForFlowGraph(
case MethodRecognizer::kMathExp: case MethodRecognizer::kMathExp:
case MethodRecognizer::kMathLog: case MethodRecognizer::kMathLog:
case MethodRecognizer::kMathSqrt: case MethodRecognizer::kMathSqrt:
return FlowGraphCompiler::SupportsUnboxedDoubles(); return true;
case MethodRecognizer::kDoubleCeilToInt: case MethodRecognizer::kDoubleCeilToInt:
case MethodRecognizer::kDoubleFloorToInt: case MethodRecognizer::kDoubleFloorToInt:
if (!FlowGraphCompiler::SupportsUnboxedDoubles()) return false;
#if defined(TARGET_ARCH_X64) #if defined(TARGET_ARCH_X64)
return CompilerState::Current().is_aot() || FLAG_target_unknown_cpu; return CompilerState::Current().is_aot() || FLAG_target_unknown_cpu;
#elif defined(TARGET_ARCH_ARM64) || defined(TARGET_ARCH_RISCV32) || \ #elif defined(TARGET_ARCH_ARM64) || defined(TARGET_ARCH_RISCV32) || \

View file

@ -3851,9 +3851,7 @@ static void SetupUnboxingInfoOfParameter(const Function& function,
function.set_unboxed_integer_parameter_at(param_pos); function.set_unboxed_integer_parameter_at(param_pos);
break; break;
case UnboxingInfoMetadata::kDouble: case UnboxingInfoMetadata::kDouble:
if (FlowGraphCompiler::SupportsUnboxedDoubles()) {
function.set_unboxed_double_parameter_at(param_pos); function.set_unboxed_double_parameter_at(param_pos);
}
break; break;
case UnboxingInfoMetadata::kRecord: case UnboxingInfoMetadata::kRecord:
UNREACHABLE(); UNREACHABLE();
@ -3875,9 +3873,7 @@ static void SetupUnboxingInfoOfReturnValue(
function.set_unboxed_integer_return(); function.set_unboxed_integer_return();
break; break;
case UnboxingInfoMetadata::kDouble: case UnboxingInfoMetadata::kDouble:
if (FlowGraphCompiler::SupportsUnboxedDoubles()) {
function.set_unboxed_double_return(); function.set_unboxed_double_return();
}
break; break;
case UnboxingInfoMetadata::kRecord: case UnboxingInfoMetadata::kRecord:
function.set_unboxed_record_return(); function.set_unboxed_record_return();

View file

@ -302,9 +302,6 @@ DEFINE_ARRAY_SETTER_INTRINSIC(Uint64Array)
#define DEFINE_FLOAT_ARRAY_SETTER_INTRINSIC(enum_name) \ #define DEFINE_FLOAT_ARRAY_SETTER_INTRINSIC(enum_name) \
bool GraphIntrinsifier::Build_##enum_name##SetIndexed( \ bool GraphIntrinsifier::Build_##enum_name##SetIndexed( \
FlowGraph* flow_graph) { \ FlowGraph* flow_graph) { \
if (!FlowGraphCompiler::SupportsUnboxedDoubles()) { \
return false; \
} \
return IntrinsifyArraySetIndexed( \ return IntrinsifyArraySetIndexed( \
flow_graph, MethodRecognizer::MethodKindToReceiverCid( \ flow_graph, MethodRecognizer::MethodKindToReceiverCid( \
MethodRecognizer::k##enum_name##SetIndexed)); \ MethodRecognizer::k##enum_name##SetIndexed)); \
@ -401,8 +398,7 @@ bool GraphIntrinsifier::Build_Float64x2Add(FlowGraph* flow_graph) {
static bool BuildFloat32x4Get(FlowGraph* flow_graph, static bool BuildFloat32x4Get(FlowGraph* flow_graph,
MethodRecognizer::Kind kind) { MethodRecognizer::Kind kind) {
if (!FlowGraphCompiler::SupportsUnboxedDoubles() || if (!FlowGraphCompiler::SupportsUnboxedSimd128()) {
!FlowGraphCompiler::SupportsUnboxedSimd128()) {
return false; return false;
} }
GraphEntryInstr* graph_entry = flow_graph->graph_entry(); GraphEntryInstr* graph_entry = flow_graph->graph_entry();
@ -705,9 +701,6 @@ static Definition* ConvertOrUnboxDoubleParameter(BlockBuilder* builder,
} }
bool GraphIntrinsifier::Build_DoubleFlipSignBit(FlowGraph* flow_graph) { bool GraphIntrinsifier::Build_DoubleFlipSignBit(FlowGraph* flow_graph) {
if (!FlowGraphCompiler::SupportsUnboxedDoubles()) {
return false;
}
GraphEntryInstr* graph_entry = flow_graph->graph_entry(); GraphEntryInstr* graph_entry = flow_graph->graph_entry();
auto normal_entry = graph_entry->normal_entry(); auto normal_entry = graph_entry->normal_entry();
BlockBuilder builder(flow_graph, normal_entry, /*with_frame=*/false); BlockBuilder builder(flow_graph, normal_entry, /*with_frame=*/false);

View file

@ -1089,9 +1089,7 @@ void UnboxFieldIfSupported(const dart::Field& field,
classid_t cid = kIllegalCid; classid_t cid = kIllegalCid;
if (type.IsDoubleType()) { if (type.IsDoubleType()) {
if (FlowGraphCompiler::SupportsUnboxedDoubles()) {
cid = kDoubleCid; cid = kDoubleCid;
}
} else if (type.IsFloat32x4Type()) { } else if (type.IsFloat32x4Type()) {
if (FlowGraphCompiler::SupportsUnboxedSimd128()) { if (FlowGraphCompiler::SupportsUnboxedSimd128()) {
cid = kFloat32x4Cid; cid = kFloat32x4Cid;

View file

@ -83,7 +83,6 @@ class DeoptContext : public MallocAllocated {
} }
float FpuRegisterValueAsFloat(FpuRegister reg) const { float FpuRegisterValueAsFloat(FpuRegister reg) const {
ASSERT(FlowGraphCompiler::SupportsUnboxedDoubles());
ASSERT(fpu_registers_ != NULL); ASSERT(fpu_registers_ != NULL);
ASSERT(reg >= 0); ASSERT(reg >= 0);
ASSERT(reg < kNumberOfFpuRegisters); ASSERT(reg < kNumberOfFpuRegisters);
@ -91,7 +90,6 @@ class DeoptContext : public MallocAllocated {
} }
double FpuRegisterValueAsDouble(FpuRegister reg) const { double FpuRegisterValueAsDouble(FpuRegister reg) const {
ASSERT(FlowGraphCompiler::SupportsUnboxedDoubles());
ASSERT(fpu_registers_ != nullptr); ASSERT(fpu_registers_ != nullptr);
ASSERT(reg >= 0); ASSERT(reg >= 0);
ASSERT(reg < kNumberOfFpuRegisters); ASSERT(reg < kNumberOfFpuRegisters);

View file

@ -764,8 +764,7 @@ void KernelLoader::ReadInferredType(const Field& field,
if (FLAG_precompiled_mode) { if (FLAG_precompiled_mode) {
field.set_is_unboxed(!field.is_late() && !field.is_static() && field.set_is_unboxed(!field.is_late() && !field.is_static() &&
!field.is_nullable() && !field.is_nullable() &&
((field.guarded_cid() == kDoubleCid && ((field.guarded_cid() == kDoubleCid) ||
FlowGraphCompiler::SupportsUnboxedDoubles()) ||
(field.guarded_cid() == kFloat32x4Cid && (field.guarded_cid() == kFloat32x4Cid &&
FlowGraphCompiler::SupportsUnboxedSimd128()) || FlowGraphCompiler::SupportsUnboxedSimd128()) ||
(field.guarded_cid() == kFloat64x2Cid && (field.guarded_cid() == kFloat64x2Cid &&