283 // Initialization functions for the JVM
284 void set_locoff(uint off) { _locoff = off; }
285 void set_stkoff(uint off) { _stkoff = off; }
286 void set_monoff(uint off) { _monoff = off; }
287 void set_scloff(uint off) { _scloff = off; }
288 void set_endoff(uint off) { _endoff = off; }
289 void set_offsets(uint off) {
290 _locoff = _stkoff = _monoff = _scloff = _endoff = off;
291 }
292 void set_map(SafePointNode *map) { _map = map; }
293 void set_sp(uint sp) { _sp = sp; }
294 // _reexecute is initialized to "undefined" for a new bci
295 void set_bci(int bci) {if(_bci != bci)_reexecute=Reexecute_Undefined; _bci = bci; }
296 void set_should_reexecute(bool reexec) {_reexecute = reexec ? Reexecute_True : Reexecute_False;}
297
298 // Miscellaneous utility functions
299 JVMState* clone_deep(Compile* C) const; // recursively clones caller chain
300 JVMState* clone_shallow(Compile* C) const; // retains uncloned caller
301 void set_map_deep(SafePointNode *map);// reset map for all callers
302 void adapt_position(int delta); // Adapt offsets in in-array after adding an edge.
303
304 #ifndef PRODUCT
305 void format(PhaseRegAlloc *regalloc, const Node *n, outputStream* st) const;
306 void dump_spec(outputStream *st) const;
307 void dump_on(outputStream* st) const;
308 void dump() const {
309 dump_on(tty);
310 }
311 #endif
312 };
313
314 //------------------------------SafePointNode----------------------------------
315 // A SafePointNode is a subclass of a MultiNode for convenience (and
316 // potential code sharing) only - conceptually it is independent of
317 // the Node semantics.
318 class SafePointNode : public MultiNode {
319 virtual uint cmp( const Node &n ) const;
320 virtual uint size_of() const; // Size is bigger
321
322 public:
|
283 // Initialization functions for the JVM
284 void set_locoff(uint off) { _locoff = off; }
285 void set_stkoff(uint off) { _stkoff = off; }
286 void set_monoff(uint off) { _monoff = off; }
287 void set_scloff(uint off) { _scloff = off; }
288 void set_endoff(uint off) { _endoff = off; }
289 void set_offsets(uint off) {
290 _locoff = _stkoff = _monoff = _scloff = _endoff = off;
291 }
292 void set_map(SafePointNode *map) { _map = map; }
293 void set_sp(uint sp) { _sp = sp; }
294 // _reexecute is initialized to "undefined" for a new bci
295 void set_bci(int bci) {if(_bci != bci)_reexecute=Reexecute_Undefined; _bci = bci; }
296 void set_should_reexecute(bool reexec) {_reexecute = reexec ? Reexecute_True : Reexecute_False;}
297
298 // Miscellaneous utility functions
299 JVMState* clone_deep(Compile* C) const; // recursively clones caller chain
300 JVMState* clone_shallow(Compile* C) const; // retains uncloned caller
301 void set_map_deep(SafePointNode *map);// reset map for all callers
302 void adapt_position(int delta); // Adapt offsets in in-array after adding an edge.
303 int interpreter_frame_size() const;
304
305 #ifndef PRODUCT
306 void format(PhaseRegAlloc *regalloc, const Node *n, outputStream* st) const;
307 void dump_spec(outputStream *st) const;
308 void dump_on(outputStream* st) const;
309 void dump() const {
310 dump_on(tty);
311 }
312 #endif
313 };
314
315 //------------------------------SafePointNode----------------------------------
316 // A SafePointNode is a subclass of a MultiNode for convenience (and
317 // potential code sharing) only - conceptually it is independent of
318 // the Node semantics.
319 class SafePointNode : public MultiNode {
320 virtual uint cmp( const Node &n ) const;
321 virtual uint size_of() const; // Size is bigger
322
323 public:
|