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