X87: Change near jump to far jump to fix the jump distance check error.
authorchunyang.dai <chunyang.dai@intel.com>
Tue, 14 Apr 2015 02:09:16 +0000 (19:09 -0700)
committerCommit bot <commit-bot@chromium.org>
Tue, 14 Apr 2015 02:09:10 +0000 (02:09 +0000)
  The assembler code generated by the DeoptimizeIf(...) function under X87 is larger
  and the  distance between the link point and the bind point which has two DeoptimizeIf()
  is larger then near link distance (127) for labels.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27801}

src/x87/lithium-codegen-x87.cc

index 221c3881284460b352baa0fe97856bd4711c263b..0c38bc236c3313a451dfdfc5cb610d4703b62acd 100644 (file)
@@ -3572,7 +3572,6 @@ void LCodeGen::DoWrapReceiver(LWrapReceiver* instr) {
   // object as a receiver to normal functions. Values have to be
   // passed unchanged to builtins and strict-mode functions.
   Label receiver_ok, global_object;
-  Label::Distance dist = DeoptEveryNTimes() ? Label::kFar : Label::kNear;
   Register scratch = ToRegister(instr->temp());
 
   if (!instr->hydrogen()->known_function()) {
@@ -3582,19 +3581,19 @@ void LCodeGen::DoWrapReceiver(LWrapReceiver* instr) {
            FieldOperand(function, JSFunction::kSharedFunctionInfoOffset));
     __ test_b(FieldOperand(scratch, SharedFunctionInfo::kStrictModeByteOffset),
               1 << SharedFunctionInfo::kStrictModeBitWithinByte);
-    __ j(not_equal, &receiver_ok, dist);
+    __ j(not_equal, &receiver_ok);
 
     // Do not transform the receiver to object for builtins.
     __ test_b(FieldOperand(scratch, SharedFunctionInfo::kNativeByteOffset),
               1 << SharedFunctionInfo::kNativeBitWithinByte);
-    __ j(not_equal, &receiver_ok, dist);
+    __ j(not_equal, &receiver_ok);
   }
 
   // Normal function. Replace undefined or null with global receiver.
   __ cmp(receiver, factory()->null_value());
-  __ j(equal, &global_object, Label::kNear);
+  __ j(equal, &global_object);
   __ cmp(receiver, factory()->undefined_value());
-  __ j(equal, &global_object, Label::kNear);
+  __ j(equal, &global_object);
 
   // The receiver should be a JS object.
   __ test(receiver, Immediate(kSmiTagMask));