src/share/vm/opto/graphKit.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Sdiff src/share/vm/opto

src/share/vm/opto/graphKit.hpp

Print this page
rev 6566 : 7173584: Implement arraycopy as a macro node
Summary: delay the conversion of arraycopy to stub calls to macro expansion
Reviewed-by:


 812   // Helper functions to build synchronizations
 813   int next_monitor();
 814   Node* insert_mem_bar(int opcode, Node* precedent = NULL);
 815   Node* insert_mem_bar_volatile(int opcode, int alias_idx, Node* precedent = NULL);
 816   // Optional 'precedent' is appended as an extra edge, to force ordering.
 817   FastLockNode* shared_lock(Node* obj);
 818   void shared_unlock(Node* box, Node* obj);
 819 
 820   // helper functions for the fast path/slow path idioms
 821   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);
 822 
 823   // Generate an instance-of idiom.  Used by both the instance-of bytecode
 824   // and the reflective instance-of call.
 825   Node* gen_instanceof(Node *subobj, Node* superkls, bool safe_for_replace = false);
 826 
 827   // Generate a check-cast idiom.  Used by both the check-cast bytecode
 828   // and the array-store bytecode
 829   Node* gen_checkcast( Node *subobj, Node* superkls,
 830                        Node* *failure_control = NULL );
 831 
 832   // Generate a subtyping check.  Takes as input the subtype and supertype.
 833   // Returns 2 values: sets the default control() to the true path and
 834   // returns the false path.  Only reads from constant memory taken from the
 835   // default memory; does not write anything.  It also doesn't take in an
 836   // Object; if you wish to check an Object you need to load the Object's
 837   // class prior to coming here.
 838   Node* gen_subtype_check(Node* subklass, Node* superklass);
 839 
 840   // Static parse-time type checking logic for gen_subtype_check:
 841   enum { SSC_always_false, SSC_always_true, SSC_easy_test, SSC_full_test };
 842   int static_subtype_check(ciKlass* superk, ciKlass* subk);
 843 
 844   // Exact type check used for predicted calls and casts.
 845   // Rewrites (*casted_receiver) to be casted to the stronger type.
 846   // (Caller is responsible for doing replace_in_map.)
 847   Node* type_check_receiver(Node* receiver, ciKlass* klass, float prob,
 848                             Node* *casted_receiver);
 849 
 850   // implementation of object creation
 851   Node* set_output_for_allocation(AllocateNode* alloc,
 852                                   const TypeOopPtr* oop_type,
 853                                   bool deoptimize_on_exception=false);
 854   Node* get_layout_helper(Node* klass_node, jint& constant_value);
 855   Node* new_instance(Node* klass_node,
 856                      Node* slow_test = NULL,
 857                      Node* *return_size_val = NULL,
 858                      bool deoptimize_on_exception = false);
 859   Node* new_array(Node* klass_node, Node* count_val, int nargs,
 860                   Node* *return_size_val = NULL,
 861                   bool deoptimize_on_exception = false);
 862 




 812   // Helper functions to build synchronizations
 813   int next_monitor();
 814   Node* insert_mem_bar(int opcode, Node* precedent = NULL);
 815   Node* insert_mem_bar_volatile(int opcode, int alias_idx, Node* precedent = NULL);
 816   // Optional 'precedent' is appended as an extra edge, to force ordering.
 817   FastLockNode* shared_lock(Node* obj);
 818   void shared_unlock(Node* box, Node* obj);
 819 
 820   // helper functions for the fast path/slow path idioms
 821   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);
 822 
 823   // Generate an instance-of idiom.  Used by both the instance-of bytecode
 824   // and the reflective instance-of call.
 825   Node* gen_instanceof(Node *subobj, Node* superkls, bool safe_for_replace = false);
 826 
 827   // Generate a check-cast idiom.  Used by both the check-cast bytecode
 828   // and the array-store bytecode
 829   Node* gen_checkcast( Node *subobj, Node* superkls,
 830                        Node* *failure_control = NULL );
 831 
 832   Node* gen_subtype_check(Node* subklass, Node* superklass) {
 833     MergeMemNode* mem = merged_memory();
 834     Node* ctrl = control();
 835     Node* n = Phase::gen_subtype_check(subklass, superklass, &ctrl, mem, &_gvn);
 836     set_control(ctrl);
 837     return n;
 838   }




 839 
 840   // Exact type check used for predicted calls and casts.
 841   // Rewrites (*casted_receiver) to be casted to the stronger type.
 842   // (Caller is responsible for doing replace_in_map.)
 843   Node* type_check_receiver(Node* receiver, ciKlass* klass, float prob,
 844                             Node* *casted_receiver);
 845 
 846   // implementation of object creation
 847   Node* set_output_for_allocation(AllocateNode* alloc,
 848                                   const TypeOopPtr* oop_type,
 849                                   bool deoptimize_on_exception=false);
 850   Node* get_layout_helper(Node* klass_node, jint& constant_value);
 851   Node* new_instance(Node* klass_node,
 852                      Node* slow_test = NULL,
 853                      Node* *return_size_val = NULL,
 854                      bool deoptimize_on_exception = false);
 855   Node* new_array(Node* klass_node, Node* count_val, int nargs,
 856                   Node* *return_size_val = NULL,
 857                   bool deoptimize_on_exception = false);
 858 


src/share/vm/opto/graphKit.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File