Mercurial > hg > truffle
comparison src/share/vm/interpreter/linkResolver.cpp @ 12934:d248425bcfe8
8024804: Crash when InterfaceMethodref resolves to Object.registerNatives
Summary: Added check for NULL prior to continuation of method look up to avoid runtime crash during look up of Object's superclass' methods.
Reviewed-by: coleenp, hseigel
Contributed-by: lois.foltan@oracle.com
author | hseigel |
---|---|
date | Wed, 16 Oct 2013 14:32:05 -0400 |
parents | 2f8728d92483 |
children | ee99e1a7c5fb |
comparison
equal
deleted
inserted
replaced
12932:7fe6ef09d242 | 12934:d248425bcfe8 |
---|---|
246 // returns first instance method | 246 // returns first instance method |
247 // Looks up method in classes, then looks up local default methods | 247 // Looks up method in classes, then looks up local default methods |
248 void LinkResolver::lookup_instance_method_in_klasses(methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS) { | 248 void LinkResolver::lookup_instance_method_in_klasses(methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS) { |
249 Method* result_oop = klass->uncached_lookup_method(name, signature); | 249 Method* result_oop = klass->uncached_lookup_method(name, signature); |
250 result = methodHandle(THREAD, result_oop); | 250 result = methodHandle(THREAD, result_oop); |
251 while (!result.is_null() && result->is_static()) { | 251 while (!result.is_null() && result->is_static() && result->method_holder()->super() != NULL) { |
252 klass = KlassHandle(THREAD, result->method_holder()->super()); | 252 klass = KlassHandle(THREAD, result->method_holder()->super()); |
253 result = methodHandle(THREAD, klass->uncached_lookup_method(name, signature)); | 253 result = methodHandle(THREAD, klass->uncached_lookup_method(name, signature)); |
254 } | 254 } |
255 | 255 |
256 if (result.is_null()) { | 256 if (result.is_null()) { |