60 void set_eden_pointers(Node* &eden_top_adr, Node* &eden_end_adr); |
60 void set_eden_pointers(Node* &eden_top_adr, Node* &eden_end_adr); |
61 Node* make_load( Node* ctl, Node* mem, Node* base, int offset, |
61 Node* make_load( Node* ctl, Node* mem, Node* base, int offset, |
62 const Type* value_type, BasicType bt); |
62 const Type* value_type, BasicType bt); |
63 Node* make_store(Node* ctl, Node* mem, Node* base, int offset, |
63 Node* make_store(Node* ctl, Node* mem, Node* base, int offset, |
64 Node* value, BasicType bt); |
64 Node* value, BasicType bt); |
|
65 |
|
66 Node* make_leaf_call(Node* ctrl, Node* mem, |
|
67 const TypeFunc* call_type, address call_addr, |
|
68 const char* call_name, |
|
69 const TypePtr* adr_type, |
|
70 Node* parm0 = NULL, Node* parm1 = NULL, |
|
71 Node* parm2 = NULL, Node* parm3 = NULL, |
|
72 Node* parm4 = NULL, Node* parm5 = NULL, |
|
73 Node* parm6 = NULL, Node* parm7 = NULL); |
|
74 |
|
75 address basictype2arraycopy(BasicType t, |
|
76 Node* src_offset, |
|
77 Node* dest_offset, |
|
78 bool disjoint_bases, |
|
79 const char* &name, |
|
80 bool dest_uninitialized); |
65 |
81 |
66 private: |
82 private: |
67 // projections extracted from a call node |
83 // projections extracted from a call node |
68 ProjNode *_fallthroughproj; |
84 ProjNode *_fallthroughproj; |
69 ProjNode *_fallthroughcatchproj; |
85 ProjNode *_fallthroughcatchproj; |
101 |
117 |
102 // More helper methods modeled after GraphKit for array copy |
118 // More helper methods modeled after GraphKit for array copy |
103 void insert_mem_bar(Node** ctrl, Node** mem, int opcode, Node* precedent = NULL); |
119 void insert_mem_bar(Node** ctrl, Node** mem, int opcode, Node* precedent = NULL); |
104 Node* array_element_address(Node* ary, Node* idx, BasicType elembt); |
120 Node* array_element_address(Node* ary, Node* idx, BasicType elembt); |
105 Node* ConvI2L(Node* offset); |
121 Node* ConvI2L(Node* offset); |
106 Node* make_leaf_call(Node* ctrl, Node* mem, |
|
107 const TypeFunc* call_type, address call_addr, |
|
108 const char* call_name, |
|
109 const TypePtr* adr_type, |
|
110 Node* parm0 = NULL, Node* parm1 = NULL, |
|
111 Node* parm2 = NULL, Node* parm3 = NULL, |
|
112 Node* parm4 = NULL, Node* parm5 = NULL, |
|
113 Node* parm6 = NULL, Node* parm7 = NULL); |
|
114 |
122 |
115 // helper methods modeled after LibraryCallKit for array copy |
123 // helper methods modeled after LibraryCallKit for array copy |
116 Node* generate_guard(Node** ctrl, Node* test, RegionNode* region, float true_prob); |
124 Node* generate_guard(Node** ctrl, Node* test, RegionNode* region, float true_prob); |
117 Node* generate_slow_guard(Node** ctrl, Node* test, RegionNode* region); |
125 Node* generate_slow_guard(Node** ctrl, Node* test, RegionNode* region); |
118 void generate_negative_guard(Node** ctrl, Node* index, RegionNode* region); |
126 void generate_negative_guard(Node** ctrl, Node* index, RegionNode* region); |
119 void generate_limit_guard(Node** ctrl, Node* offset, Node* subseq_length, Node* array_length, RegionNode* region); |
127 void generate_limit_guard(Node** ctrl, Node* offset, Node* subseq_length, Node* array_length, RegionNode* region); |
120 |
128 |
121 // More helper methods for array copy |
129 // More helper methods for array copy |
122 Node* generate_nonpositive_guard(Node** ctrl, Node* index, bool never_negative); |
130 Node* generate_nonpositive_guard(Node** ctrl, Node* index, bool never_negative); |
123 void finish_arraycopy_call(Node* call, Node** ctrl, MergeMemNode** mem, const TypePtr* adr_type); |
131 void finish_arraycopy_call(Node* call, Node** ctrl, MergeMemNode** mem, const TypePtr* adr_type); |
124 address basictype2arraycopy(BasicType t, |
|
125 Node* src_offset, |
|
126 Node* dest_offset, |
|
127 bool disjoint_bases, |
|
128 const char* &name, |
|
129 bool dest_uninitialized); |
|
130 Node* generate_arraycopy(ArrayCopyNode *ac, |
132 Node* generate_arraycopy(ArrayCopyNode *ac, |
131 AllocateArrayNode* alloc, |
133 AllocateArrayNode* alloc, |
132 Node** ctrl, MergeMemNode* mem, Node** io, |
134 Node** ctrl, MergeMemNode* mem, Node** io, |
133 const TypePtr* adr_type, |
135 const TypePtr* adr_type, |
134 BasicType basic_elem_type, |
136 BasicType basic_elem_type, |