< prev index next >

src/hotspot/share/c1/c1_ValueStack.hpp

Print this page
*** 42,10 ***
--- 42,11 ---
   private:
    IRScope* _scope;                               // the enclosing scope
    ValueStack* _caller_state;
    int      _bci;
    Kind     _kind;
+   bool     _should_reexecute;
  
    Values   _locals;                              // the locals
    Values   _stack;                               // the expression stack
    Values*  _locks;                               // the monitor stack (holding the locked values)
  

*** 61,21 ***
  
    // helper routine
    static void apply(const Values& list, ValueVisitor* f);
  
    // for simplified copying
!   ValueStack(ValueStack* copy_from, Kind kind, int bci);
  
    int locals_size_for_copy(Kind kind) const;
    int stack_size_for_copy(Kind kind) const;
   public:
    // creation
    ValueStack(IRScope* scope, ValueStack* caller_state);
  
!   ValueStack* copy()                             { return new ValueStack(this, _kind, _bci); }
!   ValueStack* copy(Kind new_kind, int new_bci)   { return new ValueStack(this, new_kind, new_bci); }
!   ValueStack* copy_for_parsing()                 { return new ValueStack(this, Parsing, -99); }
  
    void set_caller_state(ValueStack* s)           {
      assert(kind() == EmptyExceptionState ||
             (Compilation::current()->env()->should_retain_local_variables() && kind() == ExceptionState),
             "only EmptyExceptionStates can be modified");
--- 62,21 ---
  
    // helper routine
    static void apply(const Values& list, ValueVisitor* f);
  
    // for simplified copying
!   ValueStack(ValueStack* copy_from, Kind kind, int bci, bool reexecute);
  
    int locals_size_for_copy(Kind kind) const;
    int stack_size_for_copy(Kind kind) const;
   public:
    // creation
    ValueStack(IRScope* scope, ValueStack* caller_state);
  
!   ValueStack* copy()                             { return new ValueStack(this, _kind, _bci, _should_reexecute); }
!   ValueStack* copy(Kind new_kind, int new_bci)   { return new ValueStack(this, new_kind, new_bci, _should_reexecute); }
!   ValueStack* copy_for_parsing()                 { return new ValueStack(this, Parsing, -99, false); }
  
    void set_caller_state(ValueStack* s)           {
      assert(kind() == EmptyExceptionState ||
             (Compilation::current()->env()->should_retain_local_variables() && kind() == ExceptionState),
             "only EmptyExceptionStates can be modified");

*** 87,10 ***
--- 88,12 ---
    // accessors
    IRScope* scope() const                         { return _scope; }
    ValueStack* caller_state() const               { return _caller_state; }
    int bci() const                                { return _bci; }
    Kind kind() const                              { return _kind; }
+   bool should_reexecute() const                  { return _should_reexecute; }
+   void set_should_reexecute(bool reexec)         { _should_reexecute = reexec; }
  
    int locals_size() const                        { return _locals.length(); }
    int stack_size() const                         { return _stack.length(); }
    int locks_size() const                         { return _locks == NULL ? 0 : _locks->length(); }
    bool stack_is_empty() const                    { return _stack.is_empty(); }
< prev index next >