// Copyright 2011 Google Inc. All Rights Reserved.

#ifndef ART_SRC_CONTEXT_X86_H_
#define ART_SRC_CONTEXT_X86_H_

#include "context.h"

#include "constants_x86.h"

namespace art {
namespace x86 {

class X86Context : public Context {
 public:
  X86Context();
  virtual ~X86Context() {}

  // No callee saves on X86
  virtual void FillCalleeSaves(const Frame& fr);

  virtual void SetSP(uintptr_t new_sp) {
    gprs_[ESP] = new_sp;
  }

  virtual void SetPC(uintptr_t new_pc) {
    eip_ = new_pc;
  }

  virtual uintptr_t GetGPR(uint32_t reg) {
    CHECK_GE(reg, 0u);
    CHECK_LT(reg, 8u);
    return gprs_[reg];
  }

  virtual void DoLongJump();

 private:
  uintptr_t gprs_[8];
  uintptr_t eip_;
};
}  // namespace x86
}  // namespace art

#endif  // ART_SRC_CONTEXT_X86_H_
