Modules/Objects/public/interpreter/CallStack.hpp
2024-03-23 13:08:36 +03:00

29 lines
No EOL
533 B
C++

#pragma once
#include "core/Object.hpp"
#include "primitives/ClassObject.hpp"
#include "Map.hpp"
namespace tp::obj {
struct MethodObject;
struct ByteCode;
struct CallStack {
struct CallFrame {
enum { CALL_DEPTH = 1024 };
Object* mSelf = nullptr;
MethodObject* mMethod = nullptr;
ualni mIp = 0;
};
void enter(const CallFrame& frame);
void leave();
ByteCode* getBytecode();
[[nodiscard]] halni len() const;
ConstSizeBuffer<CallFrame, CallFrame::CALL_DEPTH> mStack;
};
}