< 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 >