From: palfia@homejinni.com Date: Fri, 29 Nov 2013 19:50:38 +0000 (+0000) Subject: MIPS: Optimize NumberTagU X-Git-Tag: upstream/4.7.83~11484 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=35ba60113deef811bbab1708e568cb7eed817bf9;p=platform%2Fupstream%2Fv8.git MIPS: Optimize NumberTagU Port r18162 (8377a09b) Original commit message: Optimize register constaints for NumberTagU Lithium instruction, and adjust code generated to match. BUG= R=gergely@homejinni.com Review URL: https://codereview.chromium.org/97083002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18165 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- diff --git a/src/mips/lithium-codegen-mips.cc b/src/mips/lithium-codegen-mips.cc index 71bacba..3fb08ef 100644 --- a/src/mips/lithium-codegen-mips.cc +++ b/src/mips/lithium-codegen-mips.cc @@ -4708,13 +4708,12 @@ void LCodeGen::DoNumberTagU(LNumberTagU* instr) { LNumberTagU* instr_; }; - LOperand* input = instr->value(); - ASSERT(input->IsRegister() && input->Equals(instr->result())); - Register reg = ToRegister(input); + Register input = ToRegister(instr->value()); + Register result = ToRegister(instr->result()); DeferredNumberTagU* deferred = new(zone()) DeferredNumberTagU(this, instr); - __ Branch(deferred->entry(), hi, reg, Operand(Smi::kMaxValue)); - __ SmiTag(reg, reg); + __ Branch(deferred->entry(), hi, input, Operand(Smi::kMaxValue)); + __ SmiTag(result, input); __ bind(deferred->exit()); } diff --git a/src/mips/lithium-mips.cc b/src/mips/lithium-mips.cc index 1a99bb9..4b161d6 100644 --- a/src/mips/lithium-mips.cc +++ b/src/mips/lithium-mips.cc @@ -1940,7 +1940,7 @@ LInstruction* LChunkBuilder::DoChange(HChange* instr) { LOperand* value = UseRegisterAtStart(val); if (val->CheckFlag(HInstruction::kUint32)) { LNumberTagU* result = new(zone()) LNumberTagU(value); - return AssignEnvironment(AssignPointerMap(DefineSameAsFirst(result))); + return AssignEnvironment(AssignPointerMap(DefineAsRegister(result))); } else if (val->HasRange() && val->range()->IsInSmiRange()) { return DefineAsRegister(new(zone()) LSmiTag(value)); } else {