| Index: src/lithium.cc
|
| diff --git a/src/lithium.cc b/src/lithium.cc
|
| index 61b7e6702c4dd5fb930e02e7e4cdde338bea94d7..3c397eb54ba1a9f707612dc58e83627caa23f0ae 100644
|
| --- a/src/lithium.cc
|
| +++ b/src/lithium.cc
|
| @@ -55,16 +55,26 @@ void LOperand::PrintTo(StringStream* stream) {
|
| break;
|
| case LUnallocated::FIXED_REGISTER: {
|
| int reg_index = unalloc->fixed_register_index();
|
| - const char* register_name =
|
| + if (reg_index < 0 ||
|
| + reg_index >= Register::kMaxNumAllocatableRegisters) {
|
| + stream->Add("(=invalid_reg#%d)", reg_index);
|
| + } else {
|
| + const char* register_name =
|
| Register::AllocationIndexToString(reg_index);
|
| - stream->Add("(=%s)", register_name);
|
| + stream->Add("(=%s)", register_name);
|
| + }
|
| break;
|
| }
|
| case LUnallocated::FIXED_DOUBLE_REGISTER: {
|
| int reg_index = unalloc->fixed_register_index();
|
| - const char* double_register_name =
|
| + if (reg_index < 0 ||
|
| + reg_index >= DoubleRegister::kMaxNumAllocatableRegisters) {
|
| + stream->Add("(=invalid_double_reg#%d)", reg_index);
|
| + } else {
|
| + const char* double_register_name =
|
| DoubleRegister::AllocationIndexToString(reg_index);
|
| - stream->Add("(=%s)", double_register_name);
|
| + stream->Add("(=%s)", double_register_name);
|
| + }
|
| break;
|
| }
|
| case LUnallocated::MUST_HAVE_REGISTER:
|
| @@ -93,12 +103,27 @@ void LOperand::PrintTo(StringStream* stream) {
|
| case DOUBLE_STACK_SLOT:
|
| stream->Add("[double_stack:%d]", index());
|
| break;
|
| - case REGISTER:
|
| - stream->Add("[%s|R]", Register::AllocationIndexToString(index()));
|
| + case REGISTER: {
|
| + int reg_index = index();
|
| + if (reg_index < 0 ||
|
| + reg_index >= Register::kMaxNumAllocatableRegisters) {
|
| + stream->Add("(=invalid_reg#%d|R)", reg_index);
|
| + } else {
|
| + stream->Add("[%s|R]", Register::AllocationIndexToString(reg_index));
|
| + }
|
| break;
|
| - case DOUBLE_REGISTER:
|
| - stream->Add("[%s|R]", DoubleRegister::AllocationIndexToString(index()));
|
| + }
|
| + case DOUBLE_REGISTER: {
|
| + int reg_index = index();
|
| + if (reg_index < 0 ||
|
| + reg_index >= DoubleRegister::kMaxNumAllocatableRegisters) {
|
| + stream->Add("(=invalid_double_reg#%d|R)", reg_index);
|
| + } else {
|
| + stream->Add("[%s|R]",
|
| + DoubleRegister::AllocationIndexToString(reg_index));
|
| + }
|
| break;
|
| + }
|
| }
|
| }
|
|
|
| @@ -242,11 +267,11 @@ LChunk::LChunk(CompilationInfo* info, HGraph* graph)
|
| : spill_slot_count_(0),
|
| info_(info),
|
| graph_(graph),
|
| - instructions_(32, graph->zone()),
|
| - pointer_maps_(8, graph->zone()),
|
| - inlined_closures_(1, graph->zone()),
|
| - deprecation_dependencies_(MapLess(), MapAllocator(graph->zone())),
|
| - stability_dependencies_(MapLess(), MapAllocator(graph->zone())) {
|
| + instructions_(32, info->zone()),
|
| + pointer_maps_(8, info->zone()),
|
| + inlined_closures_(1, info->zone()),
|
| + deprecation_dependencies_(MapLess(), MapAllocator(info->zone())),
|
| + stability_dependencies_(MapLess(), MapAllocator(info->zone())) {
|
| }
|
|
|
|
|
| @@ -308,7 +333,7 @@ void LChunk::MarkEmptyBlocks() {
|
|
|
|
|
| void LChunk::AddInstruction(LInstruction* instr, HBasicBlock* block) {
|
| - LInstructionGap* gap = new(graph_->zone()) LInstructionGap(block);
|
| + LInstructionGap* gap = new(zone()) LInstructionGap(block);
|
| gap->set_hydrogen_value(instr->hydrogen_value());
|
| int index = -1;
|
| if (instr->IsControl()) {
|
|
|