< prev index next >
src/hotspot/share/interpreter/templateInterpreter.hpp
Print this page
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
@@ -90,12 +90,14 @@
friend class CodeCacheExtensions;
// friend class Interpreter;
public:
enum MoreConstants {
- number_of_return_entries = number_of_states, // number of return entry points
- number_of_deopt_entries = number_of_states, // number of deoptimization entry points
+ max_invoke_length = 5, // invokedynamic is the longest
+ max_bytecode_length = 6, // worse case is wide iinc, "reexecute" bytecodes are excluded because "skip" will be 0
+ number_of_return_entries = max_invoke_length + 1, // number of return entry points
+ number_of_deopt_entries = max_bytecode_length + 1, // number of deoptimization entry points
number_of_return_addrs = number_of_states // number of return addresses
};
protected:
@@ -117,10 +119,11 @@
static EntryPoint _trace_code;
#endif // !PRODUCT
static EntryPoint _return_entry[number_of_return_entries]; // entry points to return to from a call
static EntryPoint _earlyret_entry; // entry point to return early from a call
static EntryPoint _deopt_entry[number_of_deopt_entries]; // entry points to return to from a deoptimization
+ static address _deopt_reexecute_return_entry;
static EntryPoint _safept_entry;
static address _invoke_return_entry[number_of_return_addrs]; // for invokestatic, invokespecial, invokevirtual return entries
static address _invokeinterface_return_entry[number_of_return_addrs]; // for invokeinterface return entries
static address _invokedynamic_return_entry[number_of_return_addrs]; // for invokedynamic return entries
@@ -170,10 +173,11 @@
static int TosState_as_index(TosState state);
static address* invoke_return_entry_table_for(Bytecodes::Code code);
static address deopt_entry(TosState state, int length);
+ static address deopt_reexecute_return_entry() { return _deopt_reexecute_return_entry; }
static address return_entry(TosState state, int length, Bytecodes::Code code);
// Safepoint support
static void notice_safepoints(); // stops the thread when reaching a safepoint
static void ignore_safepoints(); // ignores safepoints
< prev index next >