comparison src/share/vm/opto/callnode.hpp @ 17791:ad3b94907eed

8030863: PPC64: (part 220): ConstantTableBase for calls between args and jvms Summary: Add ConstantTableBase node edge after parameters and before jvms. Adapt jvms offsets. Reviewed-by: kvn
author goetz
date Fri, 20 Dec 2013 13:51:14 +0100
parents 3bfb204913de
children 4ca6dc0799b6 0bf37f737702
comparison
equal deleted inserted replaced
17790:5da8bb64b370 17791:ad3b94907eed
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);