#pragma once
#include <vector>
#include <torch/csrc/jit/mobile/code.h>
#include <torch/csrc/jit/mobile/frame.h>
namespace torch {
namespace jit {
namespace mobile {
struct InterpreterState {
TORCH_API explicit InterpreterState(const Code& code);
TORCH_API bool run(Stack& stack);
private:
void enterFrame(const Code&);
void leaveFrame();
void saveExceptionDebugHandles();
void callFunction(torch::jit::Function& f, Stack& stack);
c10::IValue& reg(size_t reg);
std::vector<c10::IValue> registers_;
std::vector<Frame> frames_;
};
const std::vector<DebugHandle>& getInterpretersExceptionDebugHandles();
} // namespace mobile
} // namespace jit
} // namespace torch