X87: fixed branch distances.
authorweiliang.lin@intel.com <weiliang.lin@intel.com>
Wed, 24 Sep 2014 15:17:20 +0000 (15:17 +0000)
committerweiliang.lin@intel.com <weiliang.lin@intel.com>
Wed, 24 Sep 2014 15:17:20 +0000 (15:17 +0000)
port r24151.

original commit message:

  Forgot a few kNear occurences, only happens with --deopt-every-n-times.
  Death to manual jump distance calculation! :-P

BUG=
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/595263002

Patch from Chunyang Dai <chunyang.dai@intel.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24189 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/x87/lithium-codegen-x87.cc

index 4f79f84..95a12b3 100644 (file)
@@ -5302,9 +5302,10 @@ void LCodeGen::DoDoubleToI(LDoubleToI* instr) {
     Label lost_precision, is_nan, minus_zero, done;
     X87Register input_reg = ToX87Register(input);
     X87Fxch(input_reg);
+    Label::Distance dist = DeoptEveryNTimes() ? Label::kFar : Label::kNear;
     __ X87TOSToI(result_reg, instr->hydrogen()->GetMinusZeroMode(),
-                 &lost_precision, &is_nan, &minus_zero, Label::kNear);
-    __ jmp(&done, Label::kNear);
+                 &lost_precision, &is_nan, &minus_zero, dist);
+    __ jmp(&done, dist);
     __ bind(&lost_precision);
     DeoptimizeIf(no_condition, instr, "lost precision");
     __ bind(&is_nan);
@@ -5326,10 +5327,10 @@ void LCodeGen::DoDoubleToSmi(LDoubleToSmi* instr) {
   Label lost_precision, is_nan, minus_zero, done;
   X87Register input_reg = ToX87Register(input);
   X87Fxch(input_reg);
+  Label::Distance dist = DeoptEveryNTimes() ? Label::kFar : Label::kNear;
   __ X87TOSToI(result_reg, instr->hydrogen()->GetMinusZeroMode(),
-               &lost_precision, &is_nan, &minus_zero,
-               DeoptEveryNTimes() ? Label::kFar : Label::kNear);
-  __ jmp(&done, Label::kNear);
+               &lost_precision, &is_nan, &minus_zero, dist);
+  __ jmp(&done, dist);
   __ bind(&lost_precision);
   DeoptimizeIf(no_condition, instr, "lost precision");
   __ bind(&is_nan);