< prev index next >

src/hotspot/share/opto/graphKit.hpp

Print this page




 794                           Node* parm4 = NULL, Node* parm5 = NULL,
 795                           Node* parm6 = NULL, Node* parm7 = NULL);
 796   enum {  // flag values for make_runtime_call
 797     RC_NO_FP = 1,               // CallLeafNoFPNode
 798     RC_NO_IO = 2,               // do not hook IO edges
 799     RC_NO_LEAF = 4,             // CallStaticJavaNode
 800     RC_MUST_THROW = 8,          // flag passed to add_safepoint_edges
 801     RC_NARROW_MEM = 16,         // input memory is same as output
 802     RC_UNCOMMON = 32,           // freq. expected to be like uncommon trap
 803     RC_LEAF = 0                 // null value:  no flags set
 804   };
 805 
 806   // merge in all memory slices from new_mem, along the given path
 807   void merge_memory(Node* new_mem, Node* region, int new_path);
 808   void make_slow_call_ex(Node* call, ciInstanceKlass* ex_klass, bool separate_io_proj, bool deoptimize = false);
 809 
 810   // Helper functions to build synchronizations
 811   int next_monitor();
 812   Node* insert_mem_bar(int opcode, Node* precedent = NULL);
 813   Node* insert_mem_bar_volatile(int opcode, int alias_idx, Node* precedent = NULL);
 814   void insert_store_load_for_barrier();
 815   // Optional 'precedent' is appended as an extra edge, to force ordering.
 816   FastLockNode* shared_lock(Node* obj);
 817   void shared_unlock(Node* box, Node* obj);
 818 
 819   // helper functions for the fast path/slow path idioms
 820   Node* fast_and_slow(Node* in, const Type *result_type, Node* null_result, IfNode* fast_test, Node* fast_result, address slow_call, const TypeFunc *slow_call_type, Node* slow_arg, Klass* ex_klass, Node* slow_result);
 821 
 822   // Generate an instance-of idiom.  Used by both the instance-of bytecode
 823   // and the reflective instance-of call.
 824   Node* gen_instanceof(Node *subobj, Node* superkls, bool safe_for_replace = false);
 825 
 826   // Generate a check-cast idiom.  Used by both the check-cast bytecode
 827   // and the array-store bytecode
 828   Node* gen_checkcast( Node *subobj, Node* superkls,
 829                        Node* *failure_control = NULL );
 830 
 831   Node* gen_subtype_check(Node* subklass, Node* superklass) {
 832     MergeMemNode* mem = merged_memory();
 833     Node* ctrl = control();
 834     Node* n = Phase::gen_subtype_check(subklass, superklass, &ctrl, mem, &_gvn);




 794                           Node* parm4 = NULL, Node* parm5 = NULL,
 795                           Node* parm6 = NULL, Node* parm7 = NULL);
 796   enum {  // flag values for make_runtime_call
 797     RC_NO_FP = 1,               // CallLeafNoFPNode
 798     RC_NO_IO = 2,               // do not hook IO edges
 799     RC_NO_LEAF = 4,             // CallStaticJavaNode
 800     RC_MUST_THROW = 8,          // flag passed to add_safepoint_edges
 801     RC_NARROW_MEM = 16,         // input memory is same as output
 802     RC_UNCOMMON = 32,           // freq. expected to be like uncommon trap
 803     RC_LEAF = 0                 // null value:  no flags set
 804   };
 805 
 806   // merge in all memory slices from new_mem, along the given path
 807   void merge_memory(Node* new_mem, Node* region, int new_path);
 808   void make_slow_call_ex(Node* call, ciInstanceKlass* ex_klass, bool separate_io_proj, bool deoptimize = false);
 809 
 810   // Helper functions to build synchronizations
 811   int next_monitor();
 812   Node* insert_mem_bar(int opcode, Node* precedent = NULL);
 813   Node* insert_mem_bar_volatile(int opcode, int alias_idx, Node* precedent = NULL);

 814   // Optional 'precedent' is appended as an extra edge, to force ordering.
 815   FastLockNode* shared_lock(Node* obj);
 816   void shared_unlock(Node* box, Node* obj);
 817 
 818   // helper functions for the fast path/slow path idioms
 819   Node* fast_and_slow(Node* in, const Type *result_type, Node* null_result, IfNode* fast_test, Node* fast_result, address slow_call, const TypeFunc *slow_call_type, Node* slow_arg, Klass* ex_klass, Node* slow_result);
 820 
 821   // Generate an instance-of idiom.  Used by both the instance-of bytecode
 822   // and the reflective instance-of call.
 823   Node* gen_instanceof(Node *subobj, Node* superkls, bool safe_for_replace = false);
 824 
 825   // Generate a check-cast idiom.  Used by both the check-cast bytecode
 826   // and the array-store bytecode
 827   Node* gen_checkcast( Node *subobj, Node* superkls,
 828                        Node* *failure_control = NULL );
 829 
 830   Node* gen_subtype_check(Node* subklass, Node* superklass) {
 831     MergeMemNode* mem = merged_memory();
 832     Node* ctrl = control();
 833     Node* n = Phase::gen_subtype_check(subklass, superklass, &ctrl, mem, &_gvn);


< prev index next >