/*
* Copyright (c) 2007, 2013, Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
#include "precompiled.hpp"
#include "code/scopeDesc.hpp"
#include "interpreter/interpreter.hpp"
#include "interpreter/interpreterRuntime.hpp"
#include "memory/resourceArea.hpp"
#include "oops/markOop.hpp"
#include "oops/methodOop.hpp"
#include "oops/oop.inline.hpp"
#include "runtime/frame.inline.hpp"
#include "runtime/handles.inline.hpp"
#include "runtime/javaCalls.hpp"
#include "runtime/monitorChunk.hpp"
#include "runtime/signature.hpp"
#include "runtime/stubCodeGenerator.hpp"
#include "runtime/stubRoutines.hpp"
#include "vmreg_zero.inline.hpp"
#ifdef COMPILER1
#include "c1/c1_Runtime1.hpp"
#include "runtime/vframeArray.hpp"
#endif
#ifdef ASSERT
}
#endif
return zeroframe()->is_interpreter_frame();
}
return zeroframe()->is_fake_stub_frame();
}
"sender should be next Java frame");
}
zeroframe()->is_shark_frame() ||
}
// Default is not to follow arguments; the various
// sender_for_xxx methods update this accordingly.
map->set_include_argument_oops(false);
if (is_entry_frame())
return sender_for_entry_frame(map);
else
return sender_for_nonentry_frame(map);
}
#ifdef CC_INTERP
return get_interpreterState()->monitor_base();
}
}
#endif // CC_INTERP
// We borrow this call to set the thread pointer in the interpreter
// state; the hook to set up deoptimized frames isn't supplied it.
}
}
}
}
jvalue* value_result) {
switch (type) {
case T_VOID:
break;
case T_BOOLEAN:
break;
case T_BYTE:
break;
case T_CHAR:
break;
case T_SHORT:
break;
case T_INT:
break;
case T_LONG:
break;
case T_FLOAT:
break;
case T_DOUBLE:
break;
case T_OBJECT:
case T_ARRAY:
}
else {
}
*oop_result = obj;
break;
default:
}
return type;
}
#ifdef PRODUCT
#else
return 0; // make javaVFrame::print_value work
#endif // PRODUCT
}
return &interpreter_frame_tos_address()[index];
}
char* buf,
int buflen) const {
// Divide the buffer between the field and the value
buflen >>= 1;
// Print each word of the frame
// Fill in default values, then try and improve them
// Print the result
}
}
int offset,
char* fieldbuf,
char* valuebuf,
int buflen) const {
switch (offset) {
case next_frame_off:
break;
case frame_type_off:
if (is_entry_frame())
else if (is_interpreter_frame())
else if (is_shark_frame())
else if (is_fake_stub_frame())
break;
default:
if (is_entry_frame()) {
}
else if (is_interpreter_frame()) {
}
else if (is_shark_frame()) {
}
else if (is_fake_stub_frame()) {
}
}
}
int offset,
char* fieldbuf,
char* valuebuf,
int buflen) const {
switch (offset) {
case call_wrapper_off:
break;
default:
}
}
int offset,
char* fieldbuf,
char* valuebuf,
int buflen) const {
// Fixed part
if (field) {
}
}
}
}
return;
}
// Variable part
if (!is_valid)
return;
// JNI stuff
if (param == 0)
desc = " (JNIEnv)";
else if (param == 1) {
desc = " (mirror)";
else
desc = " (this)";
}
return;
}
for (int i = 0; i < handler->argument_count(); i++) {
return;
}
}
}
}
return;
}
// Monitors and stack
istate->stack_base(),
}
int offset,
char* fieldbuf,
char* valuebuf,
int buflen) const {
// Fixed part
switch (offset) {
case pc_off:
}
}
return;
case unextended_sp_off:
return;
case method_off:
}
return;
case oop_tmp_off:
return;
}
// Variable part
}
}
char* fieldbuf,
int buflen) const {
// Monitors
return;
}
// Expression stack
if (addr < stack_base) {
return;
}
}
#ifndef PRODUCT
}
#endif
// unused... but returns fp() to minimize changes introduced by 7087445
return fp();
}