Mercurial > hg > graal-jvmci-8
comparison src/cpu/sparc/vm/interpreter_sparc.cpp @ 710:e5b0439ef4ae
6655638: dynamic languages need method handles
Summary: initial implementation, with known omissions (x86/64, sparc, compiler optim., c-oops, C++ interp.)
Reviewed-by: kvn, twisti, never
author | jrose |
---|---|
date | Wed, 08 Apr 2009 10:56:49 -0700 |
parents | a61af66fc99e |
children | ddb7834449d0 |
comparison
equal
deleted
inserted
replaced
709:1d037ecd7960 | 710:e5b0439ef4ae |
---|---|
1 /* | 1 /* |
2 * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved. | 2 * Copyright 1997-2009 Sun Microsystems, Inc. All Rights Reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * | 4 * |
5 * This code is free software; you can redistribute it and/or modify it | 5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as | 6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
233 return entry; | 233 return entry; |
234 | 234 |
235 } | 235 } |
236 | 236 |
237 | 237 |
238 | |
239 // Method handle invoker | |
240 // Dispatch a method of the form java.dyn.MethodHandles::invoke(...) | |
241 address InterpreterGenerator::generate_method_handle_entry(void) { | |
242 if (!EnableMethodHandles) { | |
243 return generate_abstract_entry(); | |
244 } | |
245 return generate_abstract_entry(); //6815692// | |
246 } | |
247 | |
248 | |
249 | |
250 | |
238 //---------------------------------------------------------------------------------------------------- | 251 //---------------------------------------------------------------------------------------------------- |
239 // Entry points & stack frame layout | 252 // Entry points & stack frame layout |
240 // | 253 // |
241 // Here we generate the various kind of entries into the interpreter. | 254 // Here we generate the various kind of entries into the interpreter. |
242 // The two main entry type are generic bytecode methods and native call method. | 255 // The two main entry type are generic bytecode methods and native call method. |
362 case Interpreter::native : entry_point = ((InterpreterGenerator*)this)->generate_native_entry(false); break; | 375 case Interpreter::native : entry_point = ((InterpreterGenerator*)this)->generate_native_entry(false); break; |
363 case Interpreter::native_synchronized : entry_point = ((InterpreterGenerator*)this)->generate_native_entry(true); break; | 376 case Interpreter::native_synchronized : entry_point = ((InterpreterGenerator*)this)->generate_native_entry(true); break; |
364 case Interpreter::empty : entry_point = ((InterpreterGenerator*)this)->generate_empty_entry(); break; | 377 case Interpreter::empty : entry_point = ((InterpreterGenerator*)this)->generate_empty_entry(); break; |
365 case Interpreter::accessor : entry_point = ((InterpreterGenerator*)this)->generate_accessor_entry(); break; | 378 case Interpreter::accessor : entry_point = ((InterpreterGenerator*)this)->generate_accessor_entry(); break; |
366 case Interpreter::abstract : entry_point = ((InterpreterGenerator*)this)->generate_abstract_entry(); break; | 379 case Interpreter::abstract : entry_point = ((InterpreterGenerator*)this)->generate_abstract_entry(); break; |
380 case Interpreter::method_handle : entry_point = ((InterpreterGenerator*)this)->generate_method_handle_entry(); break; | |
367 case Interpreter::java_lang_math_sin : break; | 381 case Interpreter::java_lang_math_sin : break; |
368 case Interpreter::java_lang_math_cos : break; | 382 case Interpreter::java_lang_math_cos : break; |
369 case Interpreter::java_lang_math_tan : break; | 383 case Interpreter::java_lang_math_tan : break; |
370 case Interpreter::java_lang_math_sqrt : break; | 384 case Interpreter::java_lang_math_sqrt : break; |
371 case Interpreter::java_lang_math_abs : break; | 385 case Interpreter::java_lang_math_abs : break; |