5#ifndef V8_MAGLEV_MAGLEV_REGISTER_FRAME_ARRAY_H_
6#define V8_MAGLEV_MAGLEV_REGISTER_FRAME_ARRAY_H_
28 static_assert(first_param.
index() < 0);
30 constexpr int frame_size_between_params_and_locals = -first_param.
index();
32 T* frame = info.zone()->AllocateArray<T>(
33 info.parameter_count() + frame_size_between_params_and_locals +
34 info.register_count());
39 frame + info.parameter_count() + frame_size_between_params_and_locals;
64 for (
int index = last_param.
index(); index <=
end; ++index) {
69 for (
int index : *liveness) {
93 return last_local.
index() - last_param.
index() + 1;
static constexpr Register FromParameterIndex(int index)
constexpr int index() const
T * data_begin(int parameter_count) const
RegisterFrameArray & operator=(RegisterFrameArray &&other) V8_NOEXCEPT=default
static int DataSize(int register_count, int parameter_count)
RegisterFrameArray(const RegisterFrameArray &other) V8_NOEXCEPT=delete
void CopyFrom(const MaglevCompilationUnit &info, const RegisterFrameArray &other, const compiler::BytecodeLivenessState *liveness)
RegisterFrameArray & operator=(const RegisterFrameArray &other) V8_NOEXCEPT=delete
T & operator[](interpreter::Register reg)
RegisterFrameArray(const MaglevCompilationUnit &info)
const T & operator[](interpreter::Register reg) const
RegisterFrameArray(RegisterFrameArray &&other) V8_NOEXCEPT=default