Assign less environments

R=danno@chromium.org

Review URL: https://chromiumcodereview.appspot.com/16556002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14983 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
verwaest@chromium.org 2013-06-06 14:31:44 +00:00
parent 16199c63d8
commit 1b4cb2aac4
3 changed files with 15 additions and 12 deletions

View File

@ -2354,10 +2354,11 @@ LInstruction* LChunkBuilder::DoStoreNamedField(HStoreNamedField* instr) {
LOperand* temp = needs_write_barrier_for_map ? TempRegister() : NULL;
LStoreNamedField* result = new(zone()) LStoreNamedField(obj, val, temp);
if ((FLAG_track_fields && instr->field_representation().IsSmi()) ||
(FLAG_track_heap_object_fields &&
instr->field_representation().IsHeapObject())) {
return AssignEnvironment(result);
if (FLAG_track_heap_object_fields &&
instr->field_representation().IsHeapObject()) {
if (!instr->value()->type().IsHeapObject()) {
return AssignEnvironment(result);
}
}
return result;
}

View File

@ -2478,10 +2478,11 @@ LInstruction* LChunkBuilder::DoStoreNamedField(HStoreNamedField* instr) {
LStoreNamedField* result =
new(zone()) LStoreNamedField(obj, val, temp, temp_map);
if ((FLAG_track_fields && instr->field_representation().IsSmi()) ||
(FLAG_track_heap_object_fields &&
instr->field_representation().IsHeapObject())) {
return AssignEnvironment(result);
if (FLAG_track_heap_object_fields &&
instr->field_representation().IsHeapObject()) {
if (!instr->value()->type().IsHeapObject()) {
return AssignEnvironment(result);
}
}
return result;
}

View File

@ -2294,10 +2294,11 @@ LInstruction* LChunkBuilder::DoStoreNamedField(HStoreNamedField* instr) {
needs_write_barrier_for_map) ? TempRegister() : NULL;
LStoreNamedField* result = new(zone()) LStoreNamedField(obj, val, temp);
if ((FLAG_track_fields && instr->field_representation().IsSmi()) ||
(FLAG_track_heap_object_fields &&
instr->field_representation().IsHeapObject())) {
return AssignEnvironment(result);
if (FLAG_track_heap_object_fields &&
instr->field_representation().IsHeapObject()) {
if (!instr->value()->type().IsHeapObject()) {
return AssignEnvironment(result);
}
}
return result;
}