170 } 171 172 // Converts all Handles to oops, and returns a reference to parameter vector 173 intptr_t* parameters() ; 174 int size_of_parameters() const { return _size; } 175 176 // Verify that pushed arguments fits a given method 177 void verify(const methodHandle& method, BasicType return_type, Thread *thread); 178 }; 179 180 // All calls to Java have to go via JavaCalls. Sets up the stack frame 181 // and makes sure that the last_Java_frame pointers are chained correctly. 182 // 183 184 class JavaCalls: AllStatic { 185 static void call_helper(JavaValue* result, const methodHandle& method, JavaCallArguments* args, TRAPS); 186 public: 187 // call_special 188 // ------------ 189 // The receiver must be first oop in argument list 190 static void call_special(JavaValue* result, KlassHandle klass, Symbol* name, Symbol* signature, JavaCallArguments* args, TRAPS); 191 192 static void call_special(JavaValue* result, Handle receiver, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS); // No args 193 static void call_special(JavaValue* result, Handle receiver, KlassHandle klass, Symbol* name, Symbol* signature, Handle arg1, TRAPS); 194 static void call_special(JavaValue* result, Handle receiver, KlassHandle klass, Symbol* name, Symbol* signature, Handle arg1, Handle arg2, TRAPS); 195 196 // virtual call 197 // ------------ 198 199 // The receiver must be first oop in argument list 200 static void call_virtual(JavaValue* result, KlassHandle spec_klass, Symbol* name, Symbol* signature, JavaCallArguments* args, TRAPS); 201 202 static void call_virtual(JavaValue* result, Handle receiver, KlassHandle spec_klass, Symbol* name, Symbol* signature, TRAPS); // No args 203 static void call_virtual(JavaValue* result, Handle receiver, KlassHandle spec_klass, Symbol* name, Symbol* signature, Handle arg1, TRAPS); 204 static void call_virtual(JavaValue* result, Handle receiver, KlassHandle spec_klass, Symbol* name, Symbol* signature, Handle arg1, Handle arg2, TRAPS); 205 206 // Static call 207 // ----------- 208 static void call_static(JavaValue* result, KlassHandle klass, Symbol* name, Symbol* signature, JavaCallArguments* args, TRAPS); 209 210 static void call_static(JavaValue* result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS); 211 static void call_static(JavaValue* result, KlassHandle klass, Symbol* name, Symbol* signature, Handle arg1, TRAPS); 212 static void call_static(JavaValue* result, KlassHandle klass, Symbol* name, Symbol* signature, Handle arg1, Handle arg2, TRAPS); 213 static void call_static(JavaValue* result, KlassHandle klass, Symbol* name, Symbol* signature, Handle arg1, Handle arg2, Handle arg3, TRAPS); 214 215 // Low-level interface 216 static void call(JavaValue* result, const methodHandle& method, JavaCallArguments* args, TRAPS); 217 }; 218 219 #endif // SHARE_VM_RUNTIME_JAVACALLS_HPP | 170 } 171 172 // Converts all Handles to oops, and returns a reference to parameter vector 173 intptr_t* parameters() ; 174 int size_of_parameters() const { return _size; } 175 176 // Verify that pushed arguments fits a given method 177 void verify(const methodHandle& method, BasicType return_type, Thread *thread); 178 }; 179 180 // All calls to Java have to go via JavaCalls. Sets up the stack frame 181 // and makes sure that the last_Java_frame pointers are chained correctly. 182 // 183 184 class JavaCalls: AllStatic { 185 static void call_helper(JavaValue* result, const methodHandle& method, JavaCallArguments* args, TRAPS); 186 public: 187 // call_special 188 // ------------ 189 // The receiver must be first oop in argument list 190 static void call_special(JavaValue* result, Klass* klass, Symbol* name, Symbol* signature, JavaCallArguments* args, TRAPS); 191 192 static void call_special(JavaValue* result, Handle receiver, Klass* klass, Symbol* name, Symbol* signature, TRAPS); // No args 193 static void call_special(JavaValue* result, Handle receiver, Klass* klass, Symbol* name, Symbol* signature, Handle arg1, TRAPS); 194 static void call_special(JavaValue* result, Handle receiver, Klass* klass, Symbol* name, Symbol* signature, Handle arg1, Handle arg2, TRAPS); 195 196 // virtual call 197 // ------------ 198 199 // The receiver must be first oop in argument list 200 static void call_virtual(JavaValue* result, Klass* spec_klass, Symbol* name, Symbol* signature, JavaCallArguments* args, TRAPS); 201 202 static void call_virtual(JavaValue* result, Handle receiver, Klass* spec_klass, Symbol* name, Symbol* signature, TRAPS); // No args 203 static void call_virtual(JavaValue* result, Handle receiver, Klass* spec_klass, Symbol* name, Symbol* signature, Handle arg1, TRAPS); 204 static void call_virtual(JavaValue* result, Handle receiver, Klass* spec_klass, Symbol* name, Symbol* signature, Handle arg1, Handle arg2, TRAPS); 205 206 // Static call 207 // ----------- 208 static void call_static(JavaValue* result, Klass* klass, Symbol* name, Symbol* signature, JavaCallArguments* args, TRAPS); 209 210 static void call_static(JavaValue* result, Klass* klass, Symbol* name, Symbol* signature, TRAPS); 211 static void call_static(JavaValue* result, Klass* klass, Symbol* name, Symbol* signature, Handle arg1, TRAPS); 212 static void call_static(JavaValue* result, Klass* klass, Symbol* name, Symbol* signature, Handle arg1, Handle arg2, TRAPS); 213 static void call_static(JavaValue* result, Klass* klass, Symbol* name, Symbol* signature, Handle arg1, Handle arg2, Handle arg3, TRAPS); 214 215 // Low-level interface 216 static void call(JavaValue* result, const methodHandle& method, JavaCallArguments* args, TRAPS); 217 }; 218 219 #endif // SHARE_VM_RUNTIME_JAVACALLS_HPP |