Mercurial > hg > truffle
diff src/share/vm/runtime/javaCalls.cpp @ 1421:6223633ce7dd
changed VMExit/VMEntries to non-static, added eclipse c++ project, CIR interface changes
author | Lukas Stadler <lukas.stadler@oracle.com> |
---|---|
date | Fri, 23 Jul 2010 15:53:02 -0700 |
parents | 09e7826ecf01 |
children | 2d26b0046e0d |
line wrap: on
line diff
--- a/src/share/vm/runtime/javaCalls.cpp Tue Jul 13 11:47:55 2010 -0700 +++ b/src/share/vm/runtime/javaCalls.cpp Fri Jul 23 15:53:02 2010 -0700 @@ -175,6 +175,23 @@ } } +// ============ Interface calls ============ + +void JavaCalls::call_interface(JavaValue* result, KlassHandle spec_klass, symbolHandle name, symbolHandle signature, JavaCallArguments* args, TRAPS) { + CallInfo callinfo; + Handle receiver = args->receiver(); + KlassHandle recvrKlass(THREAD, receiver.is_null() ? (klassOop)NULL : receiver->klass()); + LinkResolver::resolve_interface_call( + callinfo, receiver, recvrKlass, spec_klass, name, signature, + KlassHandle(), false, true, CHECK); + methodHandle method = callinfo.selected_method(); + assert(method.not_null(), "should have thrown exception"); + + // Invoke the method + JavaCalls::call(result, method, args, CHECK); +} + + // ============ Virtual calls ============ void JavaCalls::call_virtual(JavaValue* result, KlassHandle spec_klass, symbolHandle name, symbolHandle signature, JavaCallArguments* args, TRAPS) {