From: svenpanne@chromium.org Date: Tue, 23 Sep 2014 14:06:54 +0000 (+0000) Subject: Fixed branch distances. X-Git-Tag: upstream/4.7.83~6754 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=262c98593f08e3fb85157bd27bdeb3226ce14df1;p=platform%2Fupstream%2Fv8.git Fixed branch distances. Forgot a few kNear occurences, only happens with --deopt-every-n-times. Death to manual jump distance calculation! :-P TBR=jarin@chromium.org Review URL: https://codereview.chromium.org/598573002 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24151 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- diff --git a/src/ia32/lithium-codegen-ia32.cc b/src/ia32/lithium-codegen-ia32.cc index 7453cac..1d7c8c1 100644 --- a/src/ia32/lithium-codegen-ia32.cc +++ b/src/ia32/lithium-codegen-ia32.cc @@ -4843,11 +4843,11 @@ void LCodeGen::DoDoubleToI(LDoubleToI* instr) { Label lost_precision, is_nan, minus_zero, done; XMMRegister input_reg = ToDoubleRegister(input); XMMRegister xmm_scratch = double_scratch0(); + Label::Distance dist = DeoptEveryNTimes() ? Label::kFar : Label::kNear; __ DoubleToI(result_reg, input_reg, xmm_scratch, instr->hydrogen()->GetMinusZeroMode(), &lost_precision, - &is_nan, &minus_zero, - DeoptEveryNTimes() ? Label::kFar : Label::kNear); - __ jmp(&done, Label::kNear); + &is_nan, &minus_zero, dist); + __ jmp(&done, dist); __ bind(&lost_precision); DeoptimizeIf(no_condition, instr, "lost precision"); __ bind(&is_nan); @@ -4869,10 +4869,11 @@ void LCodeGen::DoDoubleToSmi(LDoubleToSmi* instr) { Label lost_precision, is_nan, minus_zero, done; XMMRegister input_reg = ToDoubleRegister(input); XMMRegister xmm_scratch = double_scratch0(); + Label::Distance dist = DeoptEveryNTimes() ? Label::kFar : Label::kNear; __ DoubleToI(result_reg, input_reg, xmm_scratch, instr->hydrogen()->GetMinusZeroMode(), &lost_precision, &is_nan, - &minus_zero, DeoptEveryNTimes() ? Label::kFar : Label::kNear); - __ jmp(&done, Label::kNear); + &minus_zero, dist); + __ jmp(&done, dist); __ bind(&lost_precision); DeoptimizeIf(no_condition, instr, "lost precision"); __ bind(&is_nan); diff --git a/src/x64/lithium-codegen-x64.cc b/src/x64/lithium-codegen-x64.cc index 9514657..1981d55 100644 --- a/src/x64/lithium-codegen-x64.cc +++ b/src/x64/lithium-codegen-x64.cc @@ -5038,11 +5038,11 @@ void LCodeGen::DoDoubleToI(LDoubleToI* instr) { } else { Label lost_precision, is_nan, minus_zero, done; XMMRegister xmm_scratch = double_scratch0(); + Label::Distance dist = DeoptEveryNTimes() ? Label::kFar : Label::kNear; __ DoubleToI(result_reg, input_reg, xmm_scratch, instr->hydrogen()->GetMinusZeroMode(), &lost_precision, - &is_nan, &minus_zero, - DeoptEveryNTimes() ? Label::kFar : Label::kNear); - __ jmp(&done, Label::kNear); + &is_nan, &minus_zero, dist); + __ jmp(&done, dist); __ bind(&lost_precision); DeoptimizeIf(no_condition, instr, "lost precision"); __ bind(&is_nan); @@ -5065,10 +5065,11 @@ void LCodeGen::DoDoubleToSmi(LDoubleToSmi* instr) { Label lost_precision, is_nan, minus_zero, done; XMMRegister xmm_scratch = double_scratch0(); + Label::Distance dist = DeoptEveryNTimes() ? Label::kFar : Label::kNear; __ DoubleToI(result_reg, input_reg, xmm_scratch, instr->hydrogen()->GetMinusZeroMode(), &lost_precision, &is_nan, - &minus_zero, DeoptEveryNTimes() ? Label::kFar : Label::kNear); - __ jmp(&done, Label::kNear); + &minus_zero, dist); + __ jmp(&done, dist); __ bind(&lost_precision); DeoptimizeIf(no_condition, instr, "lost precision"); __ bind(&is_nan);