hotspot/src/share/vm/opto/graphKit.hpp
changeset 13391 30245956af37
parent 12623 09fcb0dc71ad
child 13728 882756847a04
equal deleted inserted replaced
13309:50c604cb0d5f 13391:30245956af37
   143   void set_map(SafePointNode* m)      { _map = m; debug_only(verify_map()); }
   143   void set_map(SafePointNode* m)      { _map = m; debug_only(verify_map()); }
   144   void set_sp(int i)                  { assert(i >= 0, "must be non-negative"); _sp = i; }
   144   void set_sp(int i)                  { assert(i >= 0, "must be non-negative"); _sp = i; }
   145   void clean_stack(int from_sp); // clear garbage beyond from_sp to top
   145   void clean_stack(int from_sp); // clear garbage beyond from_sp to top
   146 
   146 
   147   void inc_sp(int i)                  { set_sp(sp() + i); }
   147   void inc_sp(int i)                  { set_sp(sp() + i); }
       
   148   void dec_sp(int i)                  { set_sp(sp() - i); }
   148   void set_bci(int bci)               { _bci = bci; }
   149   void set_bci(int bci)               { _bci = bci; }
   149 
   150 
   150   // Make sure jvms has current bci & sp.
   151   // Make sure jvms has current bci & sp.
   151   JVMState* sync_jvms()     const;
   152   JVMState* sync_jvms()     const;
   152 #ifdef ASSERT
   153 #ifdef ASSERT
   283                            bool must_throw = false);
   284                            bool must_throw = false);
   284 
   285 
   285   // How many stack inputs does the current BC consume?
   286   // How many stack inputs does the current BC consume?
   286   // And, how does the stack change after the bytecode?
   287   // And, how does the stack change after the bytecode?
   287   // Returns false if unknown.
   288   // Returns false if unknown.
   288   bool compute_stack_effects(int& inputs, int& depth);
   289   bool compute_stack_effects(int& inputs, int& depth, bool for_parse = false);
   289 
   290 
   290   // Add a fixed offset to a pointer
   291   // Add a fixed offset to a pointer
   291   Node* basic_plus_adr(Node* base, Node* ptr, intptr_t offset) {
   292   Node* basic_plus_adr(Node* base, Node* ptr, intptr_t offset) {
   292     return basic_plus_adr(base, ptr, MakeConX(offset));
   293     return basic_plus_adr(base, ptr, MakeConX(offset));
   293   }
   294   }
   368   // Cast obj to not-null on this path
   369   // Cast obj to not-null on this path
   369   Node* cast_not_null(Node* obj, bool do_replace_in_map = true);
   370   Node* cast_not_null(Node* obj, bool do_replace_in_map = true);
   370   // Replace all occurrences of one node by another.
   371   // Replace all occurrences of one node by another.
   371   void replace_in_map(Node* old, Node* neww);
   372   void replace_in_map(Node* old, Node* neww);
   372 
   373 
   373   void push(Node* n)    { map_not_null(); _map->set_stack(_map->_jvms,_sp++,n); }
   374   void  push(Node* n)     { map_not_null();        _map->set_stack(_map->_jvms,   _sp++, n); }
   374   Node* pop()           { map_not_null(); return _map->stack(_map->_jvms,--_sp); }
   375   Node* pop()             { map_not_null(); return _map->stack(    _map->_jvms, --_sp); }
   375   Node* peek(int off=0) { map_not_null(); return _map->stack(_map->_jvms, _sp - off - 1); }
   376   Node* peek(int off = 0) { map_not_null(); return _map->stack(    _map->_jvms,   _sp - off - 1); }
   376 
   377 
   377   void push_pair(Node* ldval) {
   378   void push_pair(Node* ldval) {
   378     push(ldval);
   379     push(ldval);
   379     push(top());  // the halfword is merely a placeholder
   380     push(top());  // the halfword is merely a placeholder
   380   }
   381   }