Commit 35ba6011 authored by palfia@homejinni.com's avatar palfia@homejinni.com

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
parent 5ba1304d
......@@ -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());
}
......
......@@ -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 {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment