Mercurial > hg > graal-jvmci-8
comparison src/share/vm/graal/graalCompiler.cpp @ 5003:5e6f1026a63e
fixes to vtable stub inlining: compute offset on demand, look out for interface methods
author | Lukas Stadler <lukas.stadler@jku.at> |
---|---|
date | Thu, 01 Mar 2012 15:36:35 +0100 |
parents | b5dc2403c1e7 |
children | bf63d72879aa |
comparison
equal
deleted
inserted
replaced
5002:6072d5da5c20 | 5003:5e6f1026a63e |
---|---|
272 HotSpotMethodResolved::set_codeSize(obj, method->code_size()); | 272 HotSpotMethodResolved::set_codeSize(obj, method->code_size()); |
273 HotSpotMethodResolved::set_accessFlags(obj, method->access_flags().as_int()); | 273 HotSpotMethodResolved::set_accessFlags(obj, method->access_flags().as_int()); |
274 HotSpotMethodResolved::set_maxLocals(obj, method->max_locals()); | 274 HotSpotMethodResolved::set_maxLocals(obj, method->max_locals()); |
275 HotSpotMethodResolved::set_maxStackSize(obj, method->max_stack()); | 275 HotSpotMethodResolved::set_maxStackSize(obj, method->max_stack()); |
276 HotSpotMethodResolved::set_canBeInlined(obj, !CompilerOracle::should_not_inline(method)); | 276 HotSpotMethodResolved::set_canBeInlined(obj, !CompilerOracle::should_not_inline(method)); |
277 | |
278 int vtable_entry_offset; | |
279 if (instanceKlass::cast(method->method_holder())->is_interface()) { | |
280 vtable_entry_offset = -1; | |
281 } else { | |
282 // get entry offset in words | |
283 vtable_entry_offset = instanceKlass::vtable_start_offset() + method->vtable_index() * vtableEntry::size(); | |
284 // convert to bytes | |
285 vtable_entry_offset = vtable_entry_offset * wordSize + vtableEntry::method_offset_in_bytes(); | |
286 } | |
287 HotSpotMethodResolved::set_vtableEntryOffset(obj, vtable_entry_offset); | |
288 | 277 |
289 method->set_graal_mirror(obj()); | 278 method->set_graal_mirror(obj()); |
290 return obj; | 279 return obj; |
291 } | 280 } |
292 | 281 |