181 |
181 |
182 void JavaCalls::call_virtual(JavaValue* result, KlassHandle spec_klass, Symbol* name, Symbol* signature, JavaCallArguments* args, TRAPS) { |
182 void JavaCalls::call_virtual(JavaValue* result, KlassHandle spec_klass, Symbol* name, Symbol* signature, JavaCallArguments* args, TRAPS) { |
183 CallInfo callinfo; |
183 CallInfo callinfo; |
184 Handle receiver = args->receiver(); |
184 Handle receiver = args->receiver(); |
185 KlassHandle recvrKlass(THREAD, receiver.is_null() ? (Klass*)NULL : receiver->klass()); |
185 KlassHandle recvrKlass(THREAD, receiver.is_null() ? (Klass*)NULL : receiver->klass()); |
186 LinkInfo link_info(spec_klass, name, signature); |
186 LinkInfo link_info(spec_klass, name, signature, KlassHandle(), /*check_access*/false); |
187 LinkResolver::resolve_virtual_call( |
187 LinkResolver::resolve_virtual_call( |
188 callinfo, receiver, recvrKlass, link_info, true, CHECK); |
188 callinfo, receiver, recvrKlass, link_info, true, CHECK); |
189 methodHandle method = callinfo.selected_method(); |
189 methodHandle method = callinfo.selected_method(); |
190 assert(method.not_null(), "should have thrown exception"); |
190 assert(method.not_null(), "should have thrown exception"); |
191 |
191 |
218 |
218 |
219 // ============ Special calls ============ |
219 // ============ Special calls ============ |
220 |
220 |
221 void JavaCalls::call_special(JavaValue* result, KlassHandle klass, Symbol* name, Symbol* signature, JavaCallArguments* args, TRAPS) { |
221 void JavaCalls::call_special(JavaValue* result, KlassHandle klass, Symbol* name, Symbol* signature, JavaCallArguments* args, TRAPS) { |
222 CallInfo callinfo; |
222 CallInfo callinfo; |
223 LinkInfo link_info(klass, name, signature); |
223 LinkInfo link_info(klass, name, signature, KlassHandle(), /*check_access*/false); |
224 LinkResolver::resolve_special_call(callinfo, link_info, CHECK); |
224 LinkResolver::resolve_special_call(callinfo, link_info, CHECK); |
225 methodHandle method = callinfo.selected_method(); |
225 methodHandle method = callinfo.selected_method(); |
226 assert(method.not_null(), "should have thrown exception"); |
226 assert(method.not_null(), "should have thrown exception"); |
227 |
227 |
228 // Invoke the method |
228 // Invoke the method |
253 |
253 |
254 // ============ Static calls ============ |
254 // ============ Static calls ============ |
255 |
255 |
256 void JavaCalls::call_static(JavaValue* result, KlassHandle klass, Symbol* name, Symbol* signature, JavaCallArguments* args, TRAPS) { |
256 void JavaCalls::call_static(JavaValue* result, KlassHandle klass, Symbol* name, Symbol* signature, JavaCallArguments* args, TRAPS) { |
257 CallInfo callinfo; |
257 CallInfo callinfo; |
258 LinkInfo link_info(klass, name, signature); |
258 LinkInfo link_info(klass, name, signature, KlassHandle(), /*check_access*/false); |
259 LinkResolver::resolve_static_call(callinfo, link_info, true, CHECK); |
259 LinkResolver::resolve_static_call(callinfo, link_info, true, CHECK); |
260 methodHandle method = callinfo.selected_method(); |
260 methodHandle method = callinfo.selected_method(); |
261 assert(method.not_null(), "should have thrown exception"); |
261 assert(method.not_null(), "should have thrown exception"); |
262 |
262 |
263 // Invoke the method |
263 // Invoke the method |