Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 5421 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 5432 // Transitively mark all inputs of live instructions live. | 5432 // Transitively mark all inputs of live instructions live. |
| 5433 while (!worklist.is_empty()) { | 5433 while (!worklist.is_empty()) { |
| 5434 HValue* instr = worklist.RemoveLast(); | 5434 HValue* instr = worklist.RemoveLast(); |
| 5435 for (int i = 0; i < instr->OperandCount(); ++i) { | 5435 for (int i = 0; i < instr->OperandCount(); ++i) { |
| 5436 MarkLive(instr, instr->OperandAt(i), &worklist); | 5436 MarkLive(instr, instr->OperandAt(i), &worklist); |
| 5437 } | 5437 } |
| 5438 } | 5438 } |
| 5439 } | 5439 } |
| 5440 | 5440 |
| 5441 | 5441 |
| 5442 void HGraph::MarkLive(HValue *ref, HValue* instr, | 5442 void HGraph::MarkLive(HValue *ref, HValue* instr, |
|
Jakob Kummerow
2013/05/16 13:18:57
nit: while you're here: "HValue* ref", and if all
titzer
2013/05/16 14:28:44
Fits :)
| |
| 5443 ZoneList<HValue*>* worklist) { | 5443 ZoneList<HValue*>* worklist) { |
| 5444 if (!instr->CheckFlag(HValue::kIsLive)) { | 5444 if (!instr->CheckFlag(HValue::kIsLive)) { |
| 5445 instr->SetFlag(HValue::kIsLive); | 5445 instr->SetFlag(HValue::kIsLive); |
| 5446 worklist->Add(instr, zone()); | 5446 worklist->Add(instr, zone()); |
| 5447 | 5447 |
| 5448 if (FLAG_trace_dead_code_elimination) { | 5448 if (FLAG_trace_dead_code_elimination) { |
| 5449 HeapStringAllocator allocator; | 5449 HeapStringAllocator allocator; |
| 5450 StringStream stream(&allocator); | 5450 StringStream stream(&allocator); |
| 5451 ALLOW_HANDLE_DEREF(isolate(), "debug mode printing"); | |
|
Jakob Kummerow
2013/05/16 13:18:57
I don't see any handle being dereferenced?
titzer
2013/05/16 14:28:44
Yeah, it can happen if you try to print an instruc
| |
| 5451 if (ref != NULL) { | 5452 if (ref != NULL) { |
| 5452 ref->PrintTo(&stream); | 5453 ref->PrintTo(&stream); |
| 5453 } else { | 5454 } else { |
| 5454 stream.Add("root "); | 5455 stream.Add("root "); |
| 5455 } | 5456 } |
| 5456 stream.Add(" -> "); | 5457 stream.Add(" -> "); |
| 5457 instr->PrintTo(&stream); | 5458 instr->PrintTo(&stream); |
| 5458 PrintF("[MarkLive %s]\n", *stream.ToCString()); | 5459 PrintF("[MarkLive %s]\n", *stream.ToCString()); |
| 5459 } | 5460 } |
| 5460 } | 5461 } |
| (...skipping 6998 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 12459 } | 12460 } |
| 12460 } | 12461 } |
| 12461 | 12462 |
| 12462 #ifdef DEBUG | 12463 #ifdef DEBUG |
| 12463 if (graph_ != NULL) graph_->Verify(false); // No full verify. | 12464 if (graph_ != NULL) graph_->Verify(false); // No full verify. |
| 12464 if (allocator_ != NULL) allocator_->Verify(); | 12465 if (allocator_ != NULL) allocator_->Verify(); |
| 12465 #endif | 12466 #endif |
| 12466 } | 12467 } |
| 12467 | 12468 |
| 12468 } } // namespace v8::internal | 12469 } } // namespace v8::internal |
| OLD | NEW |