// Copyright 2014 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "src/deoptimizer/deoptimizer.h" #include "src/execution/isolate-data.h" namespace v8 { namespace internal { // The deopt exit sizes below depend on the following IsolateData layout // guarantees: #define ASSERT_OFFSET(BuiltinName) \ STATIC_ASSERT(IsolateData::builtin_tier0_entry_table_offset() + \ Builtins::ToInt(BuiltinName) * kSystemPointerSize <= \ 0x1000) ASSERT_OFFSET(Builtin::kDeoptimizationEntry_Eager); ASSERT_OFFSET(Builtin::kDeoptimizationEntry_Lazy); #undef ASSERT_OFFSET const int Deoptimizer::kEagerDeoptExitSize = 6 + 2; const int Deoptimizer::kLazyDeoptExitSize = 6 + 2; Float32 RegisterValues::GetFloatRegister(unsigned n) const { return Float32::FromBits( static_cast(double_registers_[n].get_bits() >> 32)); } void FrameDescription::SetCallerPc(unsigned offset, intptr_t value) { SetFrameSlot(offset, value); } void FrameDescription::SetCallerFp(unsigned offset, intptr_t value) { SetFrameSlot(offset, value); } void FrameDescription::SetCallerConstantPool(unsigned offset, intptr_t value) { // No out-of-line constant pool support. UNREACHABLE(); } void FrameDescription::SetPc(intptr_t pc) { pc_ = pc; } } // namespace internal } // namespace v8