comparison src/share/vm/interpreter/templateInterpreter.cpp @ 7066:7d815d842ee0

Merge.
author Christian Haeubl <haeubl@ssw.jku.at>
date Fri, 23 Nov 2012 11:50:27 +0100
parents 8c5333c80cfd a3e2f723f2a5
children b8f261ba79c6
comparison
equal deleted inserted replaced
7065:cfacf5d5bade 7066:7d815d842ee0
1 /* 1 /*
2 * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 1997, 2012, Oracle and/or its affiliates. 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.
375 method_entry(java_lang_math_log10) 375 method_entry(java_lang_math_log10)
376 method_entry(java_lang_math_exp ) 376 method_entry(java_lang_math_exp )
377 method_entry(java_lang_math_pow ) 377 method_entry(java_lang_math_pow )
378 method_entry(java_lang_ref_reference_get) 378 method_entry(java_lang_ref_reference_get)
379 379
380 // method handle entry kinds are generated later in MethodHandlesAdapterGenerator::generate: 380 initialize_method_handle_entries();
381 for (int i = Interpreter::method_handle_invoke_FIRST; i <= Interpreter::method_handle_invoke_LAST; i++) {
382 Interpreter::MethodKind kind = (Interpreter::MethodKind) i;
383 Interpreter::_entry_table[kind] = Interpreter::_entry_table[Interpreter::abstract];
384 }
385 381
386 // all native method kinds (must be one contiguous block) 382 // all native method kinds (must be one contiguous block)
387 Interpreter::_native_entry_begin = Interpreter::code()->code_end(); 383 Interpreter::_native_entry_begin = Interpreter::code()->code_end();
388 method_entry(native) 384 method_entry(native)
389 method_entry(native_synchronized) 385 method_entry(native_synchronized)
512 if (tos_out == ilgl) tos_out = t->tos_out(); 508 if (tos_out == ilgl) tos_out = t->tos_out();
513 // compute bytecode size 509 // compute bytecode size
514 assert(step > 0, "just checkin'"); 510 assert(step > 0, "just checkin'");
515 // setup stuff for dispatching next bytecode 511 // setup stuff for dispatching next bytecode
516 if (ProfileInterpreter && VerifyDataPointer 512 if (ProfileInterpreter && VerifyDataPointer
517 && methodDataOopDesc::bytecode_has_profile(t->bytecode())) { 513 && MethodData::bytecode_has_profile(t->bytecode())) {
518 __ verify_method_data_pointer(); 514 __ verify_method_data_pointer();
519 } 515 }
520 __ dispatch_prolog(tos_out, step); 516 __ dispatch_prolog(tos_out, step);
521 } 517 }
522 // generate template 518 // generate template
590 586
591 //------------------------------------------------------------------------------------------------------------------------ 587 //------------------------------------------------------------------------------------------------------------------------
592 // Deoptimization support 588 // Deoptimization support
593 589
594 // If deoptimization happens, this function returns the point of next bytecode to continue execution 590 // If deoptimization happens, this function returns the point of next bytecode to continue execution
595 address TemplateInterpreter::deopt_continue_after_entry(methodOop method, address bcp, int callee_parameters, bool is_top_frame) { 591 address TemplateInterpreter::deopt_continue_after_entry(Method* method, address bcp, int callee_parameters, bool is_top_frame) {
596 return AbstractInterpreter::deopt_continue_after_entry(method, bcp, callee_parameters, is_top_frame); 592 return AbstractInterpreter::deopt_continue_after_entry(method, bcp, callee_parameters, is_top_frame);
597 } 593 }
598 594
599 // If deoptimization happens, this function returns the point where the interpreter reexecutes 595 // If deoptimization happens, this function returns the point where the interpreter reexecutes
600 // the bytecode. 596 // the bytecode.
601 // Note: Bytecodes::_athrow (C1 only) and Bytecodes::_return are the special cases 597 // Note: Bytecodes::_athrow (C1 only) and Bytecodes::_return are the special cases
602 // that do not return "Interpreter::deopt_entry(vtos, 0)" 598 // that do not return "Interpreter::deopt_entry(vtos, 0)"
603 address TemplateInterpreter::deopt_reexecute_entry(methodOop method, address bcp) { 599 address TemplateInterpreter::deopt_reexecute_entry(Method* method, address bcp) {
604 assert(method->contains(bcp), "just checkin'"); 600 assert(method->contains(bcp), "just checkin'");
605 Bytecodes::Code code = Bytecodes::java_code_at(method, bcp); 601 Bytecodes::Code code = Bytecodes::java_code_at(method, bcp);
606 if (code == Bytecodes::_return) { 602 if (code == Bytecodes::_return) {
607 // This is used for deopt during registration of finalizers 603 // This is used for deopt during registration of finalizers
608 // during Object.<init>. We simply need to resume execution at 604 // during Object.<init>. We simply need to resume execution at