comparison src/share/vm/ci/ciEnv.hpp @ 1138:dd57230ba8fe

6893268: additional dynamic language related optimizations in C2 Summary: C2 needs some additional optimizations to be able to handle MethodHandle invokes and invokedynamic instructions at the best performance. Reviewed-by: kvn, never
author twisti
date Tue, 05 Jan 2010 15:21:25 +0100
parents 97125851f396
children 4ce7240d622c
comparison
equal deleted inserted replaced
1137:97125851f396 1138:dd57230ba8fe
119 ciKlass* get_klass_by_name(ciKlass* accessing_klass, 119 ciKlass* get_klass_by_name(ciKlass* accessing_klass,
120 ciSymbol* klass_name, 120 ciSymbol* klass_name,
121 bool require_local); 121 bool require_local);
122 122
123 // Constant pool access. 123 // Constant pool access.
124 ciKlass* get_klass_by_index(ciInstanceKlass* loading_klass, 124 ciKlass* get_klass_by_index(constantPoolHandle cpool,
125 int klass_index, 125 int klass_index,
126 bool& is_accessible); 126 bool& is_accessible,
127 ciConstant get_constant_by_index(ciInstanceKlass* loading_klass, 127 ciInstanceKlass* loading_klass);
128 int constant_index); 128 ciConstant get_constant_by_index(constantPoolHandle cpool,
129 int constant_index,
130 ciInstanceKlass* accessor);
129 bool is_unresolved_string(ciInstanceKlass* loading_klass, 131 bool is_unresolved_string(ciInstanceKlass* loading_klass,
130 int constant_index) const; 132 int constant_index) const;
131 bool is_unresolved_klass(ciInstanceKlass* loading_klass, 133 bool is_unresolved_klass(ciInstanceKlass* loading_klass,
132 int constant_index) const; 134 int constant_index) const;
133 ciField* get_field_by_index(ciInstanceKlass* loading_klass, 135 ciField* get_field_by_index(ciInstanceKlass* loading_klass,
134 int field_index); 136 int field_index);
135 ciMethod* get_method_by_index(ciInstanceKlass* loading_klass, 137 ciMethod* get_method_by_index(constantPoolHandle cpool,
136 int method_index, Bytecodes::Code bc); 138 int method_index, Bytecodes::Code bc,
139 ciInstanceKlass* loading_klass);
137 140
138 // Implementation methods for loading and constant pool access. 141 // Implementation methods for loading and constant pool access.
139 ciKlass* get_klass_by_name_impl(ciKlass* accessing_klass, 142 ciKlass* get_klass_by_name_impl(ciKlass* accessing_klass,
140 ciSymbol* klass_name, 143 ciSymbol* klass_name,
141 bool require_local); 144 bool require_local);
142 ciKlass* get_klass_by_index_impl(ciInstanceKlass* loading_klass, 145 ciKlass* get_klass_by_index_impl(constantPoolHandle cpool,
143 int klass_index, 146 int klass_index,
144 bool& is_accessible); 147 bool& is_accessible,
145 ciConstant get_constant_by_index_impl(ciInstanceKlass* loading_klass, 148 ciInstanceKlass* loading_klass);
146 int constant_index); 149 ciConstant get_constant_by_index_impl(constantPoolHandle cpool,
150 int constant_index,
151 ciInstanceKlass* loading_klass);
147 bool is_unresolved_string_impl (instanceKlass* loading_klass, 152 bool is_unresolved_string_impl (instanceKlass* loading_klass,
148 int constant_index) const; 153 int constant_index) const;
149 bool is_unresolved_klass_impl (instanceKlass* loading_klass, 154 bool is_unresolved_klass_impl (instanceKlass* loading_klass,
150 int constant_index) const; 155 int constant_index) const;
151 ciField* get_field_by_index_impl(ciInstanceKlass* loading_klass, 156 ciField* get_field_by_index_impl(ciInstanceKlass* loading_klass,
152 int field_index); 157 int field_index);
153 ciMethod* get_method_by_index_impl(ciInstanceKlass* loading_klass, 158 ciMethod* get_method_by_index_impl(constantPoolHandle cpool,
154 int method_index, Bytecodes::Code bc); 159 int method_index, Bytecodes::Code bc,
155 ciMethod* get_fake_invokedynamic_method_impl(ciInstanceKlass* accessor, 160 ciInstanceKlass* loading_klass);
161 ciMethod* get_fake_invokedynamic_method_impl(constantPoolHandle cpool,
156 int index, Bytecodes::Code bc); 162 int index, Bytecodes::Code bc);
157 163
158 // Helper methods 164 // Helper methods
159 bool check_klass_accessibility(ciKlass* accessing_klass, 165 bool check_klass_accessibility(ciKlass* accessing_klass,
160 klassOop resolved_klassOop); 166 klassOop resolved_klassOop);