Reland "Fixed environment assignment for LCheckNonSmi."

Now with (hopefully correct) ARM64 part... :-}

R=bmeurer@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20495 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
svenpanne@chromium.org 2014-04-04 07:07:34 +00:00
parent e26ff6c45f
commit f32ef903da
4 changed files with 12 additions and 4 deletions

View File

@ -1963,7 +1963,9 @@ LInstruction* LChunkBuilder::DoChange(HChange* instr) {
LInstruction* LChunkBuilder::DoCheckHeapObject(HCheckHeapObject* instr) {
LOperand* value = UseRegisterAtStart(instr->value());
return AssignEnvironment(new(zone()) LCheckNonSmi(value));
LInstruction* result = new(zone()) LCheckNonSmi(value);
if (!instr->value()->IsHeapObject()) result = AssignEnvironment(result);
return result;
}

View File

@ -1202,7 +1202,9 @@ LInstruction* LChunkBuilder::DoCheckMaps(HCheckMaps* instr) {
LInstruction* LChunkBuilder::DoCheckHeapObject(HCheckHeapObject* instr) {
LOperand* value = UseRegisterAtStart(instr->value());
return AssignEnvironment(new(zone()) LCheckNonSmi(value));
LInstruction* result = new(zone()) LCheckNonSmi(value);
if (!instr->value()->IsHeapObject()) result = AssignEnvironment(result);
return result;
}

View File

@ -2007,7 +2007,9 @@ LInstruction* LChunkBuilder::DoChange(HChange* instr) {
LInstruction* LChunkBuilder::DoCheckHeapObject(HCheckHeapObject* instr) {
LOperand* value = UseAtStart(instr->value());
return AssignEnvironment(new(zone()) LCheckNonSmi(value));
LInstruction* result = new(zone()) LCheckNonSmi(value);
if (!instr->value()->IsHeapObject()) result = AssignEnvironment(result);
return result;
}

View File

@ -1925,7 +1925,9 @@ LInstruction* LChunkBuilder::DoChange(HChange* instr) {
LInstruction* LChunkBuilder::DoCheckHeapObject(HCheckHeapObject* instr) {
LOperand* value = UseRegisterAtStart(instr->value());
return AssignEnvironment(new(zone()) LCheckNonSmi(value));
LInstruction* result = new(zone()) LCheckNonSmi(value);
if (!instr->value()->IsHeapObject()) result = AssignEnvironment(result);
return result;
}