< prev index next >

src/hotspot/share/runtime/javaCalls.cpp

Print this page

*** 197,221 **** JavaCalls::call(result, method, args, CHECK); } void JavaCalls::call_virtual(JavaValue* result, Handle receiver, Klass* spec_klass, Symbol* name, Symbol* signature, TRAPS) { ! JavaCallArguments args(receiver); // One oop argument call_virtual(result, spec_klass, name, signature, &args, CHECK); } void JavaCalls::call_virtual(JavaValue* result, Handle receiver, Klass* spec_klass, Symbol* name, Symbol* signature, Handle arg1, TRAPS) { ! JavaCallArguments args(receiver); // One oop argument args.push_oop(arg1); call_virtual(result, spec_klass, name, signature, &args, CHECK); } void JavaCalls::call_virtual(JavaValue* result, Handle receiver, Klass* spec_klass, Symbol* name, Symbol* signature, Handle arg1, Handle arg2, TRAPS) { ! JavaCallArguments args(receiver); // One oop argument args.push_oop(arg1); args.push_oop(arg2); call_virtual(result, spec_klass, name, signature, &args, CHECK); } --- 197,221 ---- JavaCalls::call(result, method, args, CHECK); } void JavaCalls::call_virtual(JavaValue* result, Handle receiver, Klass* spec_klass, Symbol* name, Symbol* signature, TRAPS) { ! JavaCallArguments args(receiver); call_virtual(result, spec_klass, name, signature, &args, CHECK); } void JavaCalls::call_virtual(JavaValue* result, Handle receiver, Klass* spec_klass, Symbol* name, Symbol* signature, Handle arg1, TRAPS) { ! JavaCallArguments args(receiver); args.push_oop(arg1); call_virtual(result, spec_klass, name, signature, &args, CHECK); } void JavaCalls::call_virtual(JavaValue* result, Handle receiver, Klass* spec_klass, Symbol* name, Symbol* signature, Handle arg1, Handle arg2, TRAPS) { ! JavaCallArguments args(receiver); args.push_oop(arg1); args.push_oop(arg2); call_virtual(result, spec_klass, name, signature, &args, CHECK); }
*** 233,256 **** JavaCalls::call(result, method, args, CHECK); } void JavaCalls::call_special(JavaValue* result, Handle receiver, Klass* klass, Symbol* name, Symbol* signature, TRAPS) { ! JavaCallArguments args(receiver); // One oop argument call_special(result, klass, name, signature, &args, CHECK); } void JavaCalls::call_special(JavaValue* result, Handle receiver, Klass* klass, Symbol* name, Symbol* signature, Handle arg1, TRAPS) { ! JavaCallArguments args(receiver); // One oop argument args.push_oop(arg1); call_special(result, klass, name, signature, &args, CHECK); } void JavaCalls::call_special(JavaValue* result, Handle receiver, Klass* klass, Symbol* name, Symbol* signature, Handle arg1, Handle arg2, TRAPS) { ! JavaCallArguments args(receiver); // One oop argument args.push_oop(arg1); args.push_oop(arg2); call_special(result, klass, name, signature, &args, CHECK); } --- 233,256 ---- JavaCalls::call(result, method, args, CHECK); } void JavaCalls::call_special(JavaValue* result, Handle receiver, Klass* klass, Symbol* name, Symbol* signature, TRAPS) { ! JavaCallArguments args(receiver); call_special(result, klass, name, signature, &args, CHECK); } void JavaCalls::call_special(JavaValue* result, Handle receiver, Klass* klass, Symbol* name, Symbol* signature, Handle arg1, TRAPS) { ! JavaCallArguments args(receiver); args.push_oop(arg1); call_special(result, klass, name, signature, &args, CHECK); } void JavaCalls::call_special(JavaValue* result, Handle receiver, Klass* klass, Symbol* name, Symbol* signature, Handle arg1, Handle arg2, TRAPS) { ! JavaCallArguments args(receiver); args.push_oop(arg1); args.push_oop(arg2); call_special(result, klass, name, signature, &args, CHECK); }
*** 268,304 **** JavaCalls::call(result, method, args, CHECK); } void JavaCalls::call_static(JavaValue* result, Klass* klass, Symbol* name, Symbol* signature, TRAPS) { ! JavaCallArguments args; // No argument call_static(result, klass, name, signature, &args, CHECK); } void JavaCalls::call_static(JavaValue* result, Klass* klass, Symbol* name, Symbol* signature, Handle arg1, TRAPS) { ! JavaCallArguments args(arg1); // One oop argument call_static(result, klass, name, signature, &args, CHECK); } void JavaCalls::call_static(JavaValue* result, Klass* klass, Symbol* name, Symbol* signature, Handle arg1, Handle arg2, TRAPS) { ! JavaCallArguments args; // One oop argument args.push_oop(arg1); args.push_oop(arg2); call_static(result, klass, name, signature, &args, CHECK); } void JavaCalls::call_static(JavaValue* result, Klass* klass, Symbol* name, Symbol* signature, Handle arg1, Handle arg2, Handle arg3, TRAPS) { ! JavaCallArguments args; // One oop argument args.push_oop(arg1); args.push_oop(arg2); args.push_oop(arg3); call_static(result, klass, name, signature, &args, CHECK); } // ------------------------------------------------- // Implementation of JavaCalls (low level) void JavaCalls::call(JavaValue* result, const methodHandle& method, JavaCallArguments* args, TRAPS) { --- 268,335 ---- JavaCalls::call(result, method, args, CHECK); } void JavaCalls::call_static(JavaValue* result, Klass* klass, Symbol* name, Symbol* signature, TRAPS) { ! JavaCallArguments args; call_static(result, klass, name, signature, &args, CHECK); } void JavaCalls::call_static(JavaValue* result, Klass* klass, Symbol* name, Symbol* signature, Handle arg1, TRAPS) { ! JavaCallArguments args(arg1); call_static(result, klass, name, signature, &args, CHECK); } void JavaCalls::call_static(JavaValue* result, Klass* klass, Symbol* name, Symbol* signature, Handle arg1, Handle arg2, TRAPS) { ! JavaCallArguments args; args.push_oop(arg1); args.push_oop(arg2); call_static(result, klass, name, signature, &args, CHECK); } void JavaCalls::call_static(JavaValue* result, Klass* klass, Symbol* name, Symbol* signature, Handle arg1, Handle arg2, Handle arg3, TRAPS) { ! JavaCallArguments args; args.push_oop(arg1); args.push_oop(arg2); args.push_oop(arg3); call_static(result, klass, name, signature, &args, CHECK); } + // ============ allocate and initialize new object instance ============ + + Handle JavaCalls::construct_new_instance(InstanceKlass* klass, Symbol* constructor_signature, JavaCallArguments* args, TRAPS) { + klass->initialize(CHECK_NH); // Quick no-op if already initialized. + Handle obj = klass->allocate_instance_handle(CHECK_NH); + JavaValue void_result(T_VOID); + args->set_receiver(obj); // inserts <obj> as the first argument. + JavaCalls::call_special(&void_result, klass, + vmSymbols::object_initializer_name(), + constructor_signature, args, CHECK_NH); + return obj; + } + + Handle JavaCalls::construct_new_instance(InstanceKlass* klass, Symbol* constructor_signature, TRAPS) { + JavaCallArguments args; + return JavaCalls::construct_new_instance(klass, constructor_signature, &args, CHECK_NH); + } + + Handle JavaCalls::construct_new_instance(InstanceKlass* klass, Symbol* constructor_signature, Handle arg1, TRAPS) { + JavaCallArguments args; + args.push_oop(arg1); + return JavaCalls::construct_new_instance(klass, constructor_signature, &args, CHECK_NH); + } + + Handle JavaCalls::construct_new_instance(InstanceKlass* klass, Symbol* constructor_signature, Handle arg1, Handle arg2, TRAPS) { + JavaCallArguments args; + args.push_oop(arg1); + args.push_oop(arg2); + return JavaCalls::construct_new_instance(klass, constructor_signature, &args, CHECK_NH); + } + // ------------------------------------------------- // Implementation of JavaCalls (low level) void JavaCalls::call(JavaValue* result, const methodHandle& method, JavaCallArguments* args, TRAPS) {
< prev index next >