equal
deleted
inserted
replaced
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 } |