1 /*
2 * Copyright 1997-2009 Sun Microsystems, Inc. All Rights Reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
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
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
20 * CA 95054 USA or visit www.sun.com if you need additional information or
21 * have any questions.
22 *
377 case Interpreter::empty : entry_point = ((InterpreterGenerator*)this)->generate_empty_entry(); break;
378 case Interpreter::accessor : entry_point = ((InterpreterGenerator*)this)->generate_accessor_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;
381 case Interpreter::java_lang_math_sin : break;
382 case Interpreter::java_lang_math_cos : break;
383 case Interpreter::java_lang_math_tan : break;
384 case Interpreter::java_lang_math_sqrt : break;
385 case Interpreter::java_lang_math_abs : break;
386 case Interpreter::java_lang_math_log : break;
387 case Interpreter::java_lang_math_log10 : break;
388 default : ShouldNotReachHere(); break;
389 }
390
391 if (entry_point) return entry_point;
392
393 return ((InterpreterGenerator*)this)->generate_normal_entry(synchronized);
394 }
395
396
397 // This method tells the deoptimizer how big an interpreted frame must be:
398 int AbstractInterpreter::size_activation(methodOop method,
399 int tempcount,
400 int popframe_extra_args,
401 int moncount,
402 int callee_param_count,
403 int callee_locals,
404 bool is_top_frame) {
405 return layout_activation(method,
406 tempcount,
407 popframe_extra_args,
408 moncount,
409 callee_param_count,
410 callee_locals,
411 (frame*)NULL,
412 (frame*)NULL,
413 is_top_frame);
414 }
415
416 void Deoptimization::unwind_callee_save_values(frame* f, vframeArray* vframe_array) {
|
1 /*
2 * Copyright 1997-2010 Sun Microsystems, Inc. All Rights Reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
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
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
20 * CA 95054 USA or visit www.sun.com if you need additional information or
21 * have any questions.
22 *
377 case Interpreter::empty : entry_point = ((InterpreterGenerator*)this)->generate_empty_entry(); break;
378 case Interpreter::accessor : entry_point = ((InterpreterGenerator*)this)->generate_accessor_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;
381 case Interpreter::java_lang_math_sin : break;
382 case Interpreter::java_lang_math_cos : break;
383 case Interpreter::java_lang_math_tan : break;
384 case Interpreter::java_lang_math_sqrt : break;
385 case Interpreter::java_lang_math_abs : break;
386 case Interpreter::java_lang_math_log : break;
387 case Interpreter::java_lang_math_log10 : break;
388 default : ShouldNotReachHere(); break;
389 }
390
391 if (entry_point) return entry_point;
392
393 return ((InterpreterGenerator*)this)->generate_normal_entry(synchronized);
394 }
395
396
397 bool AbstractInterpreter::can_be_compiled(methodHandle m) {
398 // No special entry points that preclude compilation
399 return true;
400 }
401
402 // This method tells the deoptimizer how big an interpreted frame must be:
403 int AbstractInterpreter::size_activation(methodOop method,
404 int tempcount,
405 int popframe_extra_args,
406 int moncount,
407 int callee_param_count,
408 int callee_locals,
409 bool is_top_frame) {
410 return layout_activation(method,
411 tempcount,
412 popframe_extra_args,
413 moncount,
414 callee_param_count,
415 callee_locals,
416 (frame*)NULL,
417 (frame*)NULL,
418 is_top_frame);
419 }
420
421 void Deoptimization::unwind_callee_save_values(frame* f, vframeArray* vframe_array) {
|