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;