| OLD | NEW |
| 1 // Copyright 2010 the V8 project authors. All rights reserved. | 1 // Copyright 2010 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 1418 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1429 void LAllocator::AllocateDoubleRegisters() { | 1429 void LAllocator::AllocateDoubleRegisters() { |
| 1430 HPhase phase("Allocate double registers", this); | 1430 HPhase phase("Allocate double registers", this); |
| 1431 num_registers_ = DoubleRegister::kNumAllocatableRegisters; | 1431 num_registers_ = DoubleRegister::kNumAllocatableRegisters; |
| 1432 mode_ = DOUBLE_REGISTERS; | 1432 mode_ = DOUBLE_REGISTERS; |
| 1433 AllocateRegisters(); | 1433 AllocateRegisters(); |
| 1434 } | 1434 } |
| 1435 | 1435 |
| 1436 | 1436 |
| 1437 void LAllocator::AllocateRegisters() { | 1437 void LAllocator::AllocateRegisters() { |
| 1438 ASSERT(mode_ != NONE); | 1438 ASSERT(mode_ != NONE); |
| 1439 reusable_slots_.Clear(); | 1439 ASSERT(unhandled_live_ranges_.is_empty()); |
| 1440 | 1440 |
| 1441 for (int i = 0; i < live_ranges_.length(); ++i) { | 1441 for (int i = 0; i < live_ranges_.length(); ++i) { |
| 1442 if (live_ranges_[i] != NULL) { | 1442 if (live_ranges_[i] != NULL) { |
| 1443 if (RequiredRegisterKind(live_ranges_[i]->id()) == mode_) { | 1443 if (RequiredRegisterKind(live_ranges_[i]->id()) == mode_) { |
| 1444 AddToUnhandledUnsorted(live_ranges_[i]); | 1444 AddToUnhandledUnsorted(live_ranges_[i]); |
| 1445 } | 1445 } |
| 1446 } | 1446 } |
| 1447 } | 1447 } |
| 1448 SortUnhandled(); | 1448 SortUnhandled(); |
| 1449 ASSERT(UnhandledIsSorted()); | 1449 ASSERT(UnhandledIsSorted()); |
| 1450 | 1450 |
| 1451 ASSERT(reusable_slots_.is_empty()); |
| 1451 ASSERT(active_live_ranges_.is_empty()); | 1452 ASSERT(active_live_ranges_.is_empty()); |
| 1452 ASSERT(inactive_live_ranges_.is_empty()); | 1453 ASSERT(inactive_live_ranges_.is_empty()); |
| 1453 | 1454 |
| 1454 if (mode_ == DOUBLE_REGISTERS) { | 1455 if (mode_ == DOUBLE_REGISTERS) { |
| 1455 for (int i = 0; i < fixed_double_live_ranges_.length(); ++i) { | 1456 for (int i = 0; i < fixed_double_live_ranges_.length(); ++i) { |
| 1456 LiveRange* current = fixed_double_live_ranges_.at(i); | 1457 LiveRange* current = fixed_double_live_ranges_.at(i); |
| 1457 if (current != NULL) { | 1458 if (current != NULL) { |
| 1458 AddToInactive(current); | 1459 AddToInactive(current); |
| 1459 } | 1460 } |
| 1460 } | 1461 } |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1525 bool result = TryAllocateFreeReg(current); | 1526 bool result = TryAllocateFreeReg(current); |
| 1526 if (!result) { | 1527 if (!result) { |
| 1527 AllocateBlockedReg(current); | 1528 AllocateBlockedReg(current); |
| 1528 } | 1529 } |
| 1529 | 1530 |
| 1530 if (current->HasRegisterAssigned()) { | 1531 if (current->HasRegisterAssigned()) { |
| 1531 AddToActive(current); | 1532 AddToActive(current); |
| 1532 } | 1533 } |
| 1533 } | 1534 } |
| 1534 | 1535 |
| 1535 active_live_ranges_.Clear(); | 1536 reusable_slots_.Rewind(0); |
| 1536 inactive_live_ranges_.Clear(); | 1537 active_live_ranges_.Rewind(0); |
| 1538 inactive_live_ranges_.Rewind(0); |
| 1537 } | 1539 } |
| 1538 | 1540 |
| 1539 | 1541 |
| 1540 void LAllocator::Setup() { | 1542 void LAllocator::Setup() { |
| 1541 LConstantOperand::SetupCache(); | 1543 LConstantOperand::SetupCache(); |
| 1542 LStackSlot::SetupCache(); | 1544 LStackSlot::SetupCache(); |
| 1543 LDoubleStackSlot::SetupCache(); | 1545 LDoubleStackSlot::SetupCache(); |
| 1544 LRegister::SetupCache(); | 1546 LRegister::SetupCache(); |
| 1545 LDoubleRegister::SetupCache(); | 1547 LDoubleRegister::SetupCache(); |
| 1546 } | 1548 } |
| (...skipping 537 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2084 LiveRange* current = live_ranges()->at(i); | 2086 LiveRange* current = live_ranges()->at(i); |
| 2085 if (current != NULL) current->Verify(); | 2087 if (current != NULL) current->Verify(); |
| 2086 } | 2088 } |
| 2087 } | 2089 } |
| 2088 | 2090 |
| 2089 | 2091 |
| 2090 #endif | 2092 #endif |
| 2091 | 2093 |
| 2092 | 2094 |
| 2093 } } // namespace v8::internal | 2095 } } // namespace v8::internal |
| OLD | NEW |