Mercurial > hg > truffle
comparison src/share/vm/oops/methodKlass.cpp @ 4979:18a5539bf19b
More diff vs hsx24 optimizations.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Mon, 27 Feb 2012 21:43:51 +0100 |
parents | 33df1aeaebbf |
children | fdd9dd4508fa |
comparison
equal
deleted
inserted
replaced
4978:99d3d8a72252 | 4979:18a5539bf19b |
---|---|
101 NOT_PRODUCT(m->set_compiled_invocation_count(0);) | 101 NOT_PRODUCT(m->set_compiled_invocation_count(0);) |
102 m->set_interpreter_invocation_count(0); | 102 m->set_interpreter_invocation_count(0); |
103 m->invocation_counter()->init(); | 103 m->invocation_counter()->init(); |
104 m->backedge_counter()->init(); | 104 m->backedge_counter()->init(); |
105 m->clear_number_of_breakpoints(); | 105 m->clear_number_of_breakpoints(); |
106 #ifdef GRAAL | |
106 m->set_graal_mirror(NULL); | 107 m->set_graal_mirror(NULL); |
108 #endif | |
107 | 109 |
108 #ifdef TIERED | 110 #ifdef TIERED |
109 m->set_rate(0); | 111 m->set_rate(0); |
110 m->set_prev_event_count(0); | 112 m->set_prev_event_count(0); |
111 m->set_prev_time(0); | 113 m->set_prev_time(0); |
127 methodOop m = methodOop(obj); | 129 methodOop m = methodOop(obj); |
128 // Performance tweak: We skip iterating over the klass pointer since we | 130 // Performance tweak: We skip iterating over the klass pointer since we |
129 // know that Universe::methodKlassObj never moves. | 131 // know that Universe::methodKlassObj never moves. |
130 MarkSweep::mark_and_push(m->adr_constMethod()); | 132 MarkSweep::mark_and_push(m->adr_constMethod()); |
131 MarkSweep::mark_and_push(m->adr_constants()); | 133 MarkSweep::mark_and_push(m->adr_constants()); |
134 #ifdef GRAAL | |
132 MarkSweep::mark_and_push(m->adr_graal_mirror()); | 135 MarkSweep::mark_and_push(m->adr_graal_mirror()); |
136 #endif | |
133 if (m->method_data() != NULL) { | 137 if (m->method_data() != NULL) { |
134 MarkSweep::mark_and_push(m->adr_method_data()); | 138 MarkSweep::mark_and_push(m->adr_method_data()); |
135 } | 139 } |
136 } | 140 } |
137 | 141 |
142 methodOop m = methodOop(obj); | 146 methodOop m = methodOop(obj); |
143 // Performance tweak: We skip iterating over the klass pointer since we | 147 // Performance tweak: We skip iterating over the klass pointer since we |
144 // know that Universe::methodKlassObj never moves. | 148 // know that Universe::methodKlassObj never moves. |
145 PSParallelCompact::mark_and_push(cm, m->adr_constMethod()); | 149 PSParallelCompact::mark_and_push(cm, m->adr_constMethod()); |
146 PSParallelCompact::mark_and_push(cm, m->adr_constants()); | 150 PSParallelCompact::mark_and_push(cm, m->adr_constants()); |
151 #ifdef GRAAL | |
147 PSParallelCompact::mark_and_push(cm, m->adr_graal_mirror()); | 152 PSParallelCompact::mark_and_push(cm, m->adr_graal_mirror()); |
153 #endif | |
154 #ifdef COMPILER2 | |
148 if (m->method_data() != NULL) { | 155 if (m->method_data() != NULL) { |
149 PSParallelCompact::mark_and_push(cm, m->adr_method_data()); | 156 PSParallelCompact::mark_and_push(cm, m->adr_method_data()); |
150 } | 157 } |
158 #endif | |
151 } | 159 } |
152 #endif // SERIALGC | 160 #endif // SERIALGC |
153 | 161 |
154 int methodKlass::oop_oop_iterate(oop obj, OopClosure* blk) { | 162 int methodKlass::oop_oop_iterate(oop obj, OopClosure* blk) { |
155 assert (obj->is_method(), "object must be method"); | 163 assert (obj->is_method(), "object must be method"); |
159 int size = m->object_size(); | 167 int size = m->object_size(); |
160 // Performance tweak: We skip iterating over the klass pointer since we | 168 // Performance tweak: We skip iterating over the klass pointer since we |
161 // know that Universe::methodKlassObj never moves | 169 // know that Universe::methodKlassObj never moves |
162 blk->do_oop(m->adr_constMethod()); | 170 blk->do_oop(m->adr_constMethod()); |
163 blk->do_oop(m->adr_constants()); | 171 blk->do_oop(m->adr_constants()); |
172 #ifdef GRAAL | |
164 blk->do_oop(m->adr_graal_mirror()); | 173 blk->do_oop(m->adr_graal_mirror()); |
174 #endif | |
165 if (m->method_data() != NULL) { | 175 if (m->method_data() != NULL) { |
166 blk->do_oop(m->adr_method_data()); | 176 blk->do_oop(m->adr_method_data()); |
167 } | 177 } |
168 return size; | 178 return size; |
169 } | 179 } |
180 oop* adr; | 190 oop* adr; |
181 adr = m->adr_constMethod(); | 191 adr = m->adr_constMethod(); |
182 if (mr.contains(adr)) blk->do_oop(adr); | 192 if (mr.contains(adr)) blk->do_oop(adr); |
183 adr = m->adr_constants(); | 193 adr = m->adr_constants(); |
184 if (mr.contains(adr)) blk->do_oop(adr); | 194 if (mr.contains(adr)) blk->do_oop(adr); |
195 #ifdef GRAAL | |
185 adr = m->adr_graal_mirror(); | 196 adr = m->adr_graal_mirror(); |
186 if (mr.contains(adr)) blk->do_oop(adr); | 197 if (mr.contains(adr)) blk->do_oop(adr); |
198 #endif | |
187 if (m->method_data() != NULL) { | 199 if (m->method_data() != NULL) { |
188 adr = m->adr_method_data(); | 200 adr = m->adr_method_data(); |
189 if (mr.contains(adr)) blk->do_oop(adr); | 201 if (mr.contains(adr)) blk->do_oop(adr); |
190 } | 202 } |
191 return size; | 203 return size; |
200 int size = m->object_size(); | 212 int size = m->object_size(); |
201 // Performance tweak: We skip iterating over the klass pointer since we | 213 // Performance tweak: We skip iterating over the klass pointer since we |
202 // know that Universe::methodKlassObj never moves. | 214 // know that Universe::methodKlassObj never moves. |
203 MarkSweep::adjust_pointer(m->adr_constMethod()); | 215 MarkSweep::adjust_pointer(m->adr_constMethod()); |
204 MarkSweep::adjust_pointer(m->adr_constants()); | 216 MarkSweep::adjust_pointer(m->adr_constants()); |
217 #ifdef GRAAL | |
205 MarkSweep::adjust_pointer(m->adr_graal_mirror()); | 218 MarkSweep::adjust_pointer(m->adr_graal_mirror()); |
219 #endif | |
206 if (m->method_data() != NULL) { | 220 if (m->method_data() != NULL) { |
207 MarkSweep::adjust_pointer(m->adr_method_data()); | 221 MarkSweep::adjust_pointer(m->adr_method_data()); |
208 } | 222 } |
209 return size; | 223 return size; |
210 } | 224 } |
217 int methodKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) { | 231 int methodKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) { |
218 assert(obj->is_method(), "should be method"); | 232 assert(obj->is_method(), "should be method"); |
219 methodOop m = methodOop(obj); | 233 methodOop m = methodOop(obj); |
220 PSParallelCompact::adjust_pointer(m->adr_constMethod()); | 234 PSParallelCompact::adjust_pointer(m->adr_constMethod()); |
221 PSParallelCompact::adjust_pointer(m->adr_constants()); | 235 PSParallelCompact::adjust_pointer(m->adr_constants()); |
236 #ifdef GRAAL | |
222 PSParallelCompact::adjust_pointer(m->adr_graal_mirror()); | 237 PSParallelCompact::adjust_pointer(m->adr_graal_mirror()); |
238 #endif | |
239 #ifdef COMPILER2 | |
223 if (m->method_data() != NULL) { | 240 if (m->method_data() != NULL) { |
224 PSParallelCompact::adjust_pointer(m->adr_method_data()); | 241 PSParallelCompact::adjust_pointer(m->adr_method_data()); |
225 } | 242 } |
243 #endif // COMPILER2 | |
226 return m->object_size(); | 244 return m->object_size(); |
227 } | 245 } |
228 #endif // SERIALGC | 246 #endif // SERIALGC |
229 | 247 |
230 #ifndef PRODUCT | 248 #ifndef PRODUCT |