Mercurial > hg > truffle
comparison src/share/vm/opto/callnode.hpp @ 17812:a7d4d4655766
Merge
author | kvn |
---|---|
date | Wed, 26 Mar 2014 18:21:05 -0700 |
parents | ad3b94907eed |
children | 4ca6dc0799b6 0bf37f737702 |
comparison
equal
deleted
inserted
replaced
17789:6b207d038106 | 17812:a7d4d4655766 |
---|---|
297 | 297 |
298 // Miscellaneous utility functions | 298 // Miscellaneous utility functions |
299 JVMState* clone_deep(Compile* C) const; // recursively clones caller chain | 299 JVMState* clone_deep(Compile* C) const; // recursively clones caller chain |
300 JVMState* clone_shallow(Compile* C) const; // retains uncloned caller | 300 JVMState* clone_shallow(Compile* C) const; // retains uncloned caller |
301 void set_map_deep(SafePointNode *map);// reset map for all callers | 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. | |
302 | 303 |
303 #ifndef PRODUCT | 304 #ifndef PRODUCT |
304 void format(PhaseRegAlloc *regalloc, const Node *n, outputStream* st) const; | 305 void format(PhaseRegAlloc *regalloc, const Node *n, outputStream* st) const; |
305 void dump_spec(outputStream *st) const; | 306 void dump_spec(outputStream *st) const; |
306 void dump_on(outputStream* st) const; | 307 void dump_on(outputStream* st) const; |
557 virtual Node *match( const ProjNode *proj, const Matcher *m ); | 558 virtual Node *match( const ProjNode *proj, const Matcher *m ); |
558 virtual uint ideal_reg() const { return NotAMachineReg; } | 559 virtual uint ideal_reg() const { return NotAMachineReg; } |
559 // Are we guaranteed that this node is a safepoint? Not true for leaf calls and | 560 // Are we guaranteed that this node is a safepoint? Not true for leaf calls and |
560 // for some macro nodes whose expansion does not have a safepoint on the fast path. | 561 // for some macro nodes whose expansion does not have a safepoint on the fast path. |
561 virtual bool guaranteed_safepoint() { return true; } | 562 virtual bool guaranteed_safepoint() { return true; } |
562 // For macro nodes, the JVMState gets modified during expansion, so when cloning | 563 // For macro nodes, the JVMState gets modified during expansion. If calls |
563 // the node the JVMState must be cloned. | 564 // use MachConstantBase, it gets modified during matching. So when cloning |
564 virtual void clone_jvms(Compile* C) { } // default is not to clone | 565 // the node the JVMState must be cloned. Default is not to clone. |
566 virtual void clone_jvms(Compile* C) { | |
567 if (C->needs_clone_jvms() && jvms() != NULL) { | |
568 set_jvms(jvms()->clone_deep(C)); | |
569 jvms()->set_map_deep(this); | |
570 } | |
571 } | |
565 | 572 |
566 // Returns true if the call may modify n | 573 // Returns true if the call may modify n |
567 virtual bool may_modify(const TypeOopPtr *t_oop, PhaseTransform *phase); | 574 virtual bool may_modify(const TypeOopPtr *t_oop, PhaseTransform *phase); |
568 // Does this node have a use of n other than in debug information? | 575 // Does this node have a use of n other than in debug information? |
569 bool has_non_debug_use(Node *n); | 576 bool has_non_debug_use(Node *n); |