< prev index next >

src/hotspot/share/opto/callnode.hpp

Print this page
rev 56101 : 8227745: Enable Escape Analysis for better performance when debugging
Reviewed-by: ???

*** 329,347 **** // A plain safepoint advertises no memory effects (NULL): const TypePtr* adr_type = NULL) : MultiNode( edges ), _oop_map(NULL), _jvms(jvms), ! _adr_type(adr_type) { init_class_id(Class_SafePoint); } OopMap* _oop_map; // Array of OopMap info (8-bit char) for GC JVMState* const _jvms; // Pointer to list of JVM State objects const TypePtr* _adr_type; // What type of memory does this node produce? ReplacedNodes _replaced_nodes; // During parsing: list of pair of nodes from calls to GraphKit::replace_in_map() // Many calls take *all* of memory as input, // but some produce a limited subset of that memory as output. // The adr_type reports the call's behavior as a store, not a load. --- 329,349 ---- // A plain safepoint advertises no memory effects (NULL): const TypePtr* adr_type = NULL) : MultiNode( edges ), _oop_map(NULL), _jvms(jvms), ! _adr_type(adr_type), ! _not_global_escape_in_scope(false) { init_class_id(Class_SafePoint); } OopMap* _oop_map; // Array of OopMap info (8-bit char) for GC JVMState* const _jvms; // Pointer to list of JVM State objects const TypePtr* _adr_type; // What type of memory does this node produce? ReplacedNodes _replaced_nodes; // During parsing: list of pair of nodes from calls to GraphKit::replace_in_map() + bool _not_global_escape_in_scope; // NoEscape or ArgEscape objects in JVM States // Many calls take *all* of memory as input, // but some produce a limited subset of that memory as output. // The adr_type reports the call's behavior as a store, not a load.
*** 459,468 **** --- 461,476 ---- _replaced_nodes.merge_with(sfpt->_replaced_nodes); } bool has_replaced_nodes() const { return !_replaced_nodes.is_empty(); } + void set_not_global_escape_in_scope(bool b) { + _not_global_escape_in_scope = b; + } + bool not_global_escape_in_scope() const { + return _not_global_escape_in_scope; + } void disconnect_from_root(PhaseIterGVN *igvn); // Standard Node stuff virtual int Opcode() const;
*** 659,676 **** bool _optimized_virtual; bool _method_handle_invoke; bool _override_symbolic_info; // Override symbolic call site info from bytecode ciMethod* _method; // Method being direct called public: const int _bci; // Byte Code Index of call byte code CallJavaNode(const TypeFunc* tf , address addr, ciMethod* method, int bci) : CallNode(tf, addr, TypePtr::BOTTOM), _optimized_virtual(false), _method_handle_invoke(false), _override_symbolic_info(false), ! _method(method), _bci(bci) { init_class_id(Class_CallJava); } virtual int Opcode() const; --- 667,686 ---- bool _optimized_virtual; bool _method_handle_invoke; bool _override_symbolic_info; // Override symbolic call site info from bytecode ciMethod* _method; // Method being direct called + bool _arg_escape; // ArgEscape in parameter list public: const int _bci; // Byte Code Index of call byte code CallJavaNode(const TypeFunc* tf , address addr, ciMethod* method, int bci) : CallNode(tf, addr, TypePtr::BOTTOM), _optimized_virtual(false), _method_handle_invoke(false), _override_symbolic_info(false), ! _method(method), ! _arg_escape(false), _bci(bci) { init_class_id(Class_CallJava); } virtual int Opcode() const;
*** 680,689 **** --- 690,701 ---- bool is_optimized_virtual() const { return _optimized_virtual; } void set_method_handle_invoke(bool f) { _method_handle_invoke = f; } bool is_method_handle_invoke() const { return _method_handle_invoke; } void set_override_symbolic_info(bool f) { _override_symbolic_info = f; } bool override_symbolic_info() const { return _override_symbolic_info; } + void set_arg_escape(bool f) { _arg_escape = f; } + bool arg_escape() const { return _arg_escape; } DEBUG_ONLY( bool validate_symbolic_info() const; ) #ifndef PRODUCT virtual void dump_spec(outputStream *st) const;
< prev index next >