#ifndef V8_DEOPTIMIZER_DEOPTIMIZED_FRAME_INFO_H_
#define V8_DEOPTIMIZER_DEOPTIMIZED_FRAME_INFO_H_
#include <vector>
#include "src/deoptimizer/translated-state.h"
namespace v8 {
namespace internal {
class DeoptimizedFrameInfo : public Malloced {
public:
DeoptimizedFrameInfo(TranslatedState* state,
TranslatedState::iterator frame_it, Isolate* isolate);
Handle<Object> GetContext() { return context_; }
Handle<Object> GetParameter(int index) {
DCHECK(0 <= index && index < parameters_count());
return parameters_[index];
}
Handle<Object> GetExpression(int index) {
DCHECK(0 <= index && index < expression_count());
return expression_stack_[index];
}
private:
int parameters_count() { return static_cast<int>(parameters_.size()); }
int expression_count() { return static_cast<int>(expression_stack_.size()); }
void SetParameter(int index, Handle<Object> obj) {
DCHECK(0 <= index && index < parameters_count());
parameters_[index] = obj;
}
void SetExpression(int index, Handle<Object> obj) {
DCHECK(0 <= index && index < expression_count());
expression_stack_[index] = obj;
}
Handle<Object> context_;
std::vector<Handle<Object>> parameters_;
std::vector<Handle<Object>> expression_stack_;
friend class Deoptimizer;
};
}
}
#endif