Mercurial > hg > graal-jvmci-8
comparison src/share/vm/oops/constantPoolOop.cpp @ 1910:d1896d1dda3e
6981788: GC map generator sometimes picks up the wrong kind of instruction operand
Summary: Distinguish pool indexes from cache indexes in recently changed code.
Reviewed-by: never
author | jrose |
---|---|
date | Sat, 30 Oct 2010 11:45:35 -0700 |
parents | d257356e35f0 |
children | 3b2dea75431e |
comparison
equal
deleted
inserted
replaced
1909:d2e35ffae982 | 1910:d1896d1dda3e |
---|---|
263 | 263 |
264 int constantPoolOopDesc::impl_name_and_type_ref_index_at(int which, bool uncached) { | 264 int constantPoolOopDesc::impl_name_and_type_ref_index_at(int which, bool uncached) { |
265 int i = which; | 265 int i = which; |
266 if (!uncached && cache() != NULL) { | 266 if (!uncached && cache() != NULL) { |
267 if (constantPoolCacheOopDesc::is_secondary_index(which)) { | 267 if (constantPoolCacheOopDesc::is_secondary_index(which)) { |
268 // Invokedynamic indexes are always processed in native order | 268 // Invokedynamic index. |
269 // so there is no question of reading a native u2 in Java order here. | |
270 int pool_index = cache()->main_entry_at(which)->constant_pool_index(); | 269 int pool_index = cache()->main_entry_at(which)->constant_pool_index(); |
271 if (tag_at(pool_index).is_invoke_dynamic()) | 270 if (tag_at(pool_index).is_invoke_dynamic()) |
272 pool_index = invoke_dynamic_name_and_type_ref_index_at(pool_index); | 271 pool_index = invoke_dynamic_name_and_type_ref_index_at(pool_index); |
273 assert(tag_at(pool_index).is_name_and_type(), ""); | 272 assert(tag_at(pool_index).is_name_and_type(), ""); |
274 return pool_index; | 273 return pool_index; |