Mercurial > hg > graal-compiler
comparison src/share/vm/interpreter/rewriter.hpp @ 1660:083fde3b838e
6964498: JSR 292 invokedynamic sites need local bootstrap methods
Summary: Add JVM_CONSTANT_InvokeDynamic records to constant pool to determine per-instruction BSMs.
Reviewed-by: twisti
author | jrose |
---|---|
date | Thu, 15 Jul 2010 18:40:45 -0700 |
parents | 136b78722a08 |
children | f95d63e2154a |
comparison
equal
deleted
inserted
replaced
1649:a528509c992b | 1660:083fde3b838e |
---|---|
30 instanceKlassHandle _klass; | 30 instanceKlassHandle _klass; |
31 constantPoolHandle _pool; | 31 constantPoolHandle _pool; |
32 objArrayHandle _methods; | 32 objArrayHandle _methods; |
33 intArray _cp_map; | 33 intArray _cp_map; |
34 intStack _cp_cache_map; | 34 intStack _cp_cache_map; |
35 bool _have_invoke_dynamic; | |
35 | 36 |
36 void init_cp_map(int length) { | 37 void init_cp_map(int length) { |
37 _cp_map.initialize(length, -1); | 38 _cp_map.initialize(length, -1); |
38 // Choose an initial value large enough that we don't get frequent | 39 // Choose an initial value large enough that we don't get frequent |
39 // calls to grow(). | 40 // calls to grow(). |
54 assert(main_cpc_entry < _cp_cache_map.length(), "must be earlier CP cache entry"); | 55 assert(main_cpc_entry < _cp_cache_map.length(), "must be earlier CP cache entry"); |
55 int cache_index = _cp_cache_map.append(main_cpc_entry | _secondary_entry_tag); | 56 int cache_index = _cp_cache_map.append(main_cpc_entry | _secondary_entry_tag); |
56 return cache_index; | 57 return cache_index; |
57 } | 58 } |
58 | 59 |
60 // Access the contents of _cp_cache_map to determine CP cache layout. | |
61 int cp_cache_entry_pool_index(int cache_index) { | |
62 int cp_index = _cp_cache_map[cache_index]; | |
63 if ((cp_index & _secondary_entry_tag) != 0) | |
64 return -1; | |
65 else | |
66 return cp_index; | |
67 } | |
68 int cp_cache_secondary_entry_main_index(int cache_index) { | |
69 int cp_index = _cp_cache_map[cache_index]; | |
70 if ((cp_index & _secondary_entry_tag) == 0) | |
71 return -1; | |
72 else | |
73 return (cp_index - _secondary_entry_tag); | |
74 } | |
75 | |
59 // All the work goes in here: | 76 // All the work goes in here: |
60 Rewriter(instanceKlassHandle klass, constantPoolHandle cpool, objArrayHandle methods, TRAPS); | 77 Rewriter(instanceKlassHandle klass, constantPoolHandle cpool, objArrayHandle methods, TRAPS); |
61 | 78 |
62 void compute_index_maps(); | 79 void compute_index_maps(); |
63 void make_constant_pool_cache(TRAPS); | 80 void make_constant_pool_cache(TRAPS); |