comparison src/share/vm/oops/methodKlass.cpp @ 3011:f00918f35c7f

inlining and runtime interface related changes: added codeSize() and compilerStorage() to RiMethod HotSpotMethodResolved uses reflective methods instead of vmIds and survives compilations HotSpotResolvedType.isInitialized not represented as field (can change) inlining stores graphs into method objects and reuses them
author Lukas Stadler <lukas.stadler@jku.at>
date Thu, 16 Jun 2011 20:36:17 +0200
parents 5d8f5a6dced7
children 63cd21fda79b
comparison
equal deleted inserted replaced
2993:3671e31615c9 3011:f00918f35c7f
100 NOT_PRODUCT(m->set_compiled_invocation_count(0);) 100 NOT_PRODUCT(m->set_compiled_invocation_count(0);)
101 m->set_interpreter_invocation_count(0); 101 m->set_interpreter_invocation_count(0);
102 m->invocation_counter()->init(); 102 m->invocation_counter()->init();
103 m->backedge_counter()->init(); 103 m->backedge_counter()->init();
104 m->clear_number_of_breakpoints(); 104 m->clear_number_of_breakpoints();
105 m->set_graal_mirror(NULL);
105 106
106 #ifdef TIERED 107 #ifdef TIERED
107 m->set_rate(0); 108 m->set_rate(0);
108 m->set_prev_event_count(0); 109 m->set_prev_event_count(0);
109 m->set_prev_time(0); 110 m->set_prev_time(0);
125 methodOop m = methodOop(obj); 126 methodOop m = methodOop(obj);
126 // Performance tweak: We skip iterating over the klass pointer since we 127 // Performance tweak: We skip iterating over the klass pointer since we
127 // know that Universe::methodKlassObj never moves. 128 // know that Universe::methodKlassObj never moves.
128 MarkSweep::mark_and_push(m->adr_constMethod()); 129 MarkSweep::mark_and_push(m->adr_constMethod());
129 MarkSweep::mark_and_push(m->adr_constants()); 130 MarkSweep::mark_and_push(m->adr_constants());
131 MarkSweep::mark_and_push(m->adr_graal_mirror());
130 if (m->method_data() != NULL) { 132 if (m->method_data() != NULL) {
131 MarkSweep::mark_and_push(m->adr_method_data()); 133 MarkSweep::mark_and_push(m->adr_method_data());
132 } 134 }
133 } 135 }
134 136
139 methodOop m = methodOop(obj); 141 methodOop m = methodOop(obj);
140 // Performance tweak: We skip iterating over the klass pointer since we 142 // Performance tweak: We skip iterating over the klass pointer since we
141 // know that Universe::methodKlassObj never moves. 143 // know that Universe::methodKlassObj never moves.
142 PSParallelCompact::mark_and_push(cm, m->adr_constMethod()); 144 PSParallelCompact::mark_and_push(cm, m->adr_constMethod());
143 PSParallelCompact::mark_and_push(cm, m->adr_constants()); 145 PSParallelCompact::mark_and_push(cm, m->adr_constants());
146 PSParallelCompact::mark_and_push(cm, m->adr_graal_mirror());
144 #ifdef COMPILER2 147 #ifdef COMPILER2
145 if (m->method_data() != NULL) { 148 if (m->method_data() != NULL) {
146 PSParallelCompact::mark_and_push(cm, m->adr_method_data()); 149 PSParallelCompact::mark_and_push(cm, m->adr_method_data());
147 } 150 }
148 #endif // COMPILER2 151 #endif // COMPILER2
157 int size = m->object_size(); 160 int size = m->object_size();
158 // Performance tweak: We skip iterating over the klass pointer since we 161 // Performance tweak: We skip iterating over the klass pointer since we
159 // know that Universe::methodKlassObj never moves 162 // know that Universe::methodKlassObj never moves
160 blk->do_oop(m->adr_constMethod()); 163 blk->do_oop(m->adr_constMethod());
161 blk->do_oop(m->adr_constants()); 164 blk->do_oop(m->adr_constants());
165 blk->do_oop(m->adr_graal_mirror());
162 if (m->method_data() != NULL) { 166 if (m->method_data() != NULL) {
163 blk->do_oop(m->adr_method_data()); 167 blk->do_oop(m->adr_method_data());
164 } 168 }
165 return size; 169 return size;
166 } 170 }
177 oop* adr; 181 oop* adr;
178 adr = m->adr_constMethod(); 182 adr = m->adr_constMethod();
179 if (mr.contains(adr)) blk->do_oop(adr); 183 if (mr.contains(adr)) blk->do_oop(adr);
180 adr = m->adr_constants(); 184 adr = m->adr_constants();
181 if (mr.contains(adr)) blk->do_oop(adr); 185 if (mr.contains(adr)) blk->do_oop(adr);
186 adr = m->adr_graal_mirror();
187 if (mr.contains(adr)) blk->do_oop(adr);
182 if (m->method_data() != NULL) { 188 if (m->method_data() != NULL) {
183 adr = m->adr_method_data(); 189 adr = m->adr_method_data();
184 if (mr.contains(adr)) blk->do_oop(adr); 190 if (mr.contains(adr)) blk->do_oop(adr);
185 } 191 }
186 return size; 192 return size;
195 int size = m->object_size(); 201 int size = m->object_size();
196 // Performance tweak: We skip iterating over the klass pointer since we 202 // Performance tweak: We skip iterating over the klass pointer since we
197 // know that Universe::methodKlassObj never moves. 203 // know that Universe::methodKlassObj never moves.
198 MarkSweep::adjust_pointer(m->adr_constMethod()); 204 MarkSweep::adjust_pointer(m->adr_constMethod());
199 MarkSweep::adjust_pointer(m->adr_constants()); 205 MarkSweep::adjust_pointer(m->adr_constants());
206 MarkSweep::adjust_pointer(m->adr_graal_mirror());
200 if (m->method_data() != NULL) { 207 if (m->method_data() != NULL) {
201 MarkSweep::adjust_pointer(m->adr_method_data()); 208 MarkSweep::adjust_pointer(m->adr_method_data());
202 } 209 }
203 return size; 210 return size;
204 } 211 }
211 int methodKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) { 218 int methodKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
212 assert(obj->is_method(), "should be method"); 219 assert(obj->is_method(), "should be method");
213 methodOop m = methodOop(obj); 220 methodOop m = methodOop(obj);
214 PSParallelCompact::adjust_pointer(m->adr_constMethod()); 221 PSParallelCompact::adjust_pointer(m->adr_constMethod());
215 PSParallelCompact::adjust_pointer(m->adr_constants()); 222 PSParallelCompact::adjust_pointer(m->adr_constants());
223 PSParallelCompact::adjust_pointer(m->adr_graal_mirror());
216 #ifdef COMPILER2 224 #ifdef COMPILER2
217 if (m->method_data() != NULL) { 225 if (m->method_data() != NULL) {
218 PSParallelCompact::adjust_pointer(m->adr_method_data()); 226 PSParallelCompact::adjust_pointer(m->adr_method_data());
219 } 227 }
220 #endif // COMPILER2 228 #endif // COMPILER2