| Index: runtime/vm/intermediate_language_arm64.cc
|
| diff --git a/runtime/vm/intermediate_language_arm64.cc b/runtime/vm/intermediate_language_arm64.cc
|
| index e8bd7597d3008cd8dd183741aa604c70c5e6284f..0029aaf6d2f2914f4bb4dbecf3106d7508fa4b9c 100644
|
| --- a/runtime/vm/intermediate_language_arm64.cc
|
| +++ b/runtime/vm/intermediate_language_arm64.cc
|
| @@ -2667,20 +2667,6 @@ void CheckStackOverflowInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
|
|
|
|
| -static void EmitJavascriptOverflowCheck(FlowGraphCompiler* compiler,
|
| - Range* range,
|
| - Label* overflow,
|
| - Register result) {
|
| - if (!RangeUtils::IsWithin(range, -0x20000000000000LL, 0x20000000000000LL)) {
|
| - ASSERT(overflow != NULL);
|
| - __ LoadImmediate(TMP, 0x20000000000000LL);
|
| - __ add(TMP2, result, Operand(TMP));
|
| - __ cmp(TMP2, Operand(TMP, LSL, 1));
|
| - __ b(overflow, HI);
|
| - }
|
| -}
|
| -
|
| -
|
| static void EmitSmiShiftLeft(FlowGraphCompiler* compiler,
|
| BinarySmiOpInstr* shift_left) {
|
| const LocationSummary& locs = *shift_left->locs();
|
| @@ -2704,9 +2690,6 @@ static void EmitSmiShiftLeft(FlowGraphCompiler* compiler,
|
| }
|
| // Shift for result now we know there is no overflow.
|
| __ LslImmediate(result, left, value);
|
| - if (FLAG_throw_on_javascript_int_overflow) {
|
| - EmitJavascriptOverflowCheck(compiler, shift_left->range(), deopt, result);
|
| - }
|
| return;
|
| }
|
|
|
| @@ -2736,9 +2719,6 @@ static void EmitSmiShiftLeft(FlowGraphCompiler* compiler,
|
| __ SmiUntag(TMP, right);
|
| __ lslv(result, left, TMP);
|
| }
|
| - if (FLAG_throw_on_javascript_int_overflow) {
|
| - EmitJavascriptOverflowCheck(compiler, shift_left->range(), deopt, result);
|
| - }
|
| return;
|
| }
|
|
|
| @@ -2783,9 +2763,6 @@ static void EmitSmiShiftLeft(FlowGraphCompiler* compiler,
|
| // Shift for result now we know there is no overflow.
|
| __ lslv(result, left, TMP);
|
| }
|
| - if (FLAG_throw_on_javascript_int_overflow) {
|
| - EmitJavascriptOverflowCheck(compiler, shift_left->range(), deopt, result);
|
| - }
|
| }
|
|
|
|
|
| @@ -2921,9 +2898,6 @@ void BinarySmiOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| UNREACHABLE();
|
| break;
|
| }
|
| - if (FLAG_throw_on_javascript_int_overflow) {
|
| - EmitJavascriptOverflowCheck(compiler, range(), deopt, result);
|
| - }
|
| return;
|
| }
|
|
|
| @@ -3066,9 +3040,6 @@ void BinarySmiOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| UNREACHABLE();
|
| break;
|
| }
|
| - if (FLAG_throw_on_javascript_int_overflow) {
|
| - EmitJavascriptOverflowCheck(compiler, range(), deopt, result);
|
| - }
|
| }
|
|
|
|
|
| @@ -4527,9 +4498,6 @@ void UnarySmiOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Label* deopt = compiler->AddDeoptStub(deopt_id(), ICData::kDeoptUnaryOp);
|
| __ subs(result, ZR, Operand(value));
|
| __ b(deopt, VS);
|
| - if (FLAG_throw_on_javascript_int_overflow) {
|
| - EmitJavascriptOverflowCheck(compiler, range(), deopt, value);
|
| - }
|
| break;
|
| }
|
| case Token::kBIT_NOT:
|
| @@ -4645,9 +4613,6 @@ void DoubleToIntegerInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ CompareImmediate(result, 0xC000000000000000);
|
| __ b(&do_call, MI);
|
| __ SmiTag(result);
|
| - if (FLAG_throw_on_javascript_int_overflow) {
|
| - EmitJavascriptOverflowCheck(compiler, range(), &do_call, result);
|
| - }
|
| __ b(&done);
|
| __ Bind(&do_call);
|
| __ Push(value_obj);
|
| @@ -4695,9 +4660,6 @@ void DoubleToSmiInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ CompareImmediate(result, 0xC000000000000000);
|
| __ b(deopt, MI);
|
| __ SmiTag(result);
|
| - if (FLAG_throw_on_javascript_int_overflow) {
|
| - EmitJavascriptOverflowCheck(compiler, range(), deopt, result);
|
| - }
|
| }
|
|
|
|
|
| @@ -5011,9 +4973,6 @@ void MergedMathInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ add(TMP, result_mod, Operand(right));
|
| __ csel(result_mod, TMP, TMP2, GE);
|
| __ Bind(&done);
|
| - // FLAG_throw_on_javascript_int_overflow: not needed.
|
| - // Note that the result of an integer division/modulo of two
|
| - // in-range arguments, cannot create out-of-range result.
|
| return;
|
| }
|
| if (kind() == MergedMathInstr::kSinCos) {
|
|
|