1 // Copyright 2011 the V8 project authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef V8_CRANKSHAFT_LITHIUM_ALLOCATOR_INL_H_ 6 #define V8_CRANKSHAFT_LITHIUM_ALLOCATOR_INL_H_ 7 8 #include "src/crankshaft/lithium-allocator.h" 9 10 #if V8_TARGET_ARCH_IA32 11 #include "src/crankshaft/ia32/lithium-ia32.h" // NOLINT 12 #elif V8_TARGET_ARCH_X64 13 #include "src/crankshaft/x64/lithium-x64.h" // NOLINT 14 #elif V8_TARGET_ARCH_ARM64 15 #include "src/crankshaft/arm64/lithium-arm64.h" // NOLINT 16 #elif V8_TARGET_ARCH_ARM 17 #include "src/crankshaft/arm/lithium-arm.h" // NOLINT 18 #elif V8_TARGET_ARCH_PPC 19 #include "src/crankshaft/ppc/lithium-ppc.h" // NOLINT 20 #elif V8_TARGET_ARCH_MIPS 21 #include "src/crankshaft/mips/lithium-mips.h" // NOLINT 22 #elif V8_TARGET_ARCH_MIPS64 23 #include "src/crankshaft/mips64/lithium-mips64.h" // NOLINT 24 #elif V8_TARGET_ARCH_S390 25 #include "src/crankshaft/s390/lithium-s390.h" // NOLINT 26 #elif V8_TARGET_ARCH_X87 27 #include "src/crankshaft/x87/lithium-x87.h" // NOLINT 28 #else 29 #error "Unknown architecture." 30 #endif 31 32 namespace v8 { 33 namespace internal { 34 35 bool LAllocator::IsGapAt(int index) { return chunk_->IsGapAt(index); } 36 37 38 LInstruction* LAllocator::InstructionAt(int index) { 39 return chunk_->instructions()->at(index); 40 } 41 42 43 LGap* LAllocator::GapAt(int index) { 44 return chunk_->GetGapAt(index); 45 } 46 47 48 void LAllocator::SetLiveRangeAssignedRegister(LiveRange* range, int reg) { 49 if (range->Kind() == DOUBLE_REGISTERS) { 50 assigned_double_registers_->Add(reg); 51 } else { 52 DCHECK(range->Kind() == GENERAL_REGISTERS); 53 assigned_registers_->Add(reg); 54 } 55 range->set_assigned_register(reg, chunk()->zone()); 56 } 57 58 59 } // namespace internal 60 } // namespace v8 61 62 #endif // V8_CRANKSHAFT_LITHIUM_ALLOCATOR_INL_H_ 63