Merge
This commit is contained in:
commit
a35b2ff495
@ -267,3 +267,4 @@ ee4fd72b2ec3d92497f37163352f294aa695c6fb jdk9-b20
|
|||||||
8e4bdab4c362aadde2d321f968cd503a2f779e2f jdk9-b22
|
8e4bdab4c362aadde2d321f968cd503a2f779e2f jdk9-b22
|
||||||
88567461a2cd9b7fb431fee6440005a694df1f47 jdk9-b23
|
88567461a2cd9b7fb431fee6440005a694df1f47 jdk9-b23
|
||||||
1d4a293fbec19dc2d5790bbb2c7dd0ed8f265484 jdk9-b24
|
1d4a293fbec19dc2d5790bbb2c7dd0ed8f265484 jdk9-b24
|
||||||
|
aefd8899a8d6615fb34ba99b2e38996a7145baa8 jdk9-b25
|
||||||
|
@ -267,3 +267,4 @@ eecc1b6adc7e193d00a0641eb0963add5a4c06e8 jdk9-b19
|
|||||||
ddc07abf4307855c0dc904cc5c96cc764023a930 jdk9-b22
|
ddc07abf4307855c0dc904cc5c96cc764023a930 jdk9-b22
|
||||||
57735d66face054440a63ce99789eac5a5ee1dfd jdk9-b23
|
57735d66face054440a63ce99789eac5a5ee1dfd jdk9-b23
|
||||||
8a44142bb7fc8118f70f91a1b97c12dfc50563ee jdk9-b24
|
8a44142bb7fc8118f70f91a1b97c12dfc50563ee jdk9-b24
|
||||||
|
da08cca6b97f41b7081a3e176dcb400af6e4bb26 jdk9-b25
|
||||||
|
@ -427,3 +427,4 @@ c1af79d122ec9f715fa29312b5e91763f3a4dfc4 jdk9-b20
|
|||||||
518d1fcc0799494f013e00e0a94a91b6f212d54f jdk9-b22
|
518d1fcc0799494f013e00e0a94a91b6f212d54f jdk9-b22
|
||||||
dd472cdacc32e3afc7c5bfa7ef16ea0e0befb7fa jdk9-b23
|
dd472cdacc32e3afc7c5bfa7ef16ea0e0befb7fa jdk9-b23
|
||||||
dde2d03b0ea46a27650839e3a1d212c7c1f7b4c8 jdk9-b24
|
dde2d03b0ea46a27650839e3a1d212c7c1f7b4c8 jdk9-b24
|
||||||
|
6de94e8693240cec8aae11f6b42f43433456a733 jdk9-b25
|
||||||
|
@ -55,7 +55,10 @@ public class Klass extends Metadata implements ClassConstants {
|
|||||||
layoutHelper = new IntField(type.getJIntField("_layout_helper"), 0);
|
layoutHelper = new IntField(type.getJIntField("_layout_helper"), 0);
|
||||||
name = type.getAddressField("_name");
|
name = type.getAddressField("_name");
|
||||||
accessFlags = new CIntField(type.getCIntegerField("_access_flags"), 0);
|
accessFlags = new CIntField(type.getCIntegerField("_access_flags"), 0);
|
||||||
traceIDField = type.getField("_trace_id");
|
try {
|
||||||
|
traceIDField = type.getField("_trace_id");
|
||||||
|
} catch(Exception e) {
|
||||||
|
}
|
||||||
subklass = new MetadataField(type.getAddressField("_subklass"), 0);
|
subklass = new MetadataField(type.getAddressField("_subklass"), 0);
|
||||||
nextSibling = new MetadataField(type.getAddressField("_next_sibling"), 0);
|
nextSibling = new MetadataField(type.getAddressField("_next_sibling"), 0);
|
||||||
|
|
||||||
@ -108,7 +111,11 @@ public class Klass extends Metadata implements ClassConstants {
|
|||||||
public AccessFlags getAccessFlagsObj(){ return new AccessFlags(getAccessFlags()); }
|
public AccessFlags getAccessFlagsObj(){ return new AccessFlags(getAccessFlags()); }
|
||||||
public Klass getSubklassKlass() { return (Klass) subklass.getValue(this); }
|
public Klass getSubklassKlass() { return (Klass) subklass.getValue(this); }
|
||||||
public Klass getNextSiblingKlass() { return (Klass) nextSibling.getValue(this); }
|
public Klass getNextSiblingKlass() { return (Klass) nextSibling.getValue(this); }
|
||||||
public long traceID() { return traceIDField.getJLong(addr); }
|
|
||||||
|
public long traceID() {
|
||||||
|
if (traceIDField == null) return 0;
|
||||||
|
return traceIDField.getJLong(addr);
|
||||||
|
}
|
||||||
|
|
||||||
// computed access flags - takes care of inner classes etc.
|
// computed access flags - takes care of inner classes etc.
|
||||||
// This is closer to actual source level than getAccessFlags() etc.
|
// This is closer to actual source level than getAccessFlags() etc.
|
||||||
|
@ -126,7 +126,7 @@ jprt.my.solaris.sparcv9.test.targets= \
|
|||||||
${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-jvm98, \
|
${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-jvm98, \
|
||||||
${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-jvm98_nontiered, \
|
${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-jvm98_nontiered, \
|
||||||
${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-scimark, \
|
${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-scimark, \
|
||||||
${jprt.my.solaris.sparcv9}-product-c2-runThese, \
|
${jprt.my.solaris.sparcv9}-product-c2-runThese8, \
|
||||||
${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-GCBasher_SerialGC, \
|
${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-GCBasher_SerialGC, \
|
||||||
${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-GCBasher_ParallelGC, \
|
${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-GCBasher_ParallelGC, \
|
||||||
${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-GCBasher_ParNewGC, \
|
${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-GCBasher_ParNewGC, \
|
||||||
@ -150,8 +150,9 @@ jprt.my.solaris.x64.test.targets= \
|
|||||||
${jprt.my.solaris.x64}-{product|fastdebug}-c2-jvm98, \
|
${jprt.my.solaris.x64}-{product|fastdebug}-c2-jvm98, \
|
||||||
${jprt.my.solaris.x64}-{product|fastdebug}-c2-jvm98_nontiered, \
|
${jprt.my.solaris.x64}-{product|fastdebug}-c2-jvm98_nontiered, \
|
||||||
${jprt.my.solaris.x64}-{product|fastdebug}-c2-scimark, \
|
${jprt.my.solaris.x64}-{product|fastdebug}-c2-scimark, \
|
||||||
${jprt.my.solaris.x64}-product-c2-runThese, \
|
${jprt.my.solaris.x64}-product-c2-runThese8, \
|
||||||
${jprt.my.solaris.x64}-product-c2-runThese_Xcomp, \
|
${jprt.my.solaris.x64}-product-c2-runThese8_Xcomp_lang, \
|
||||||
|
${jprt.my.solaris.x64}-product-c2-runThese8_Xcomp_vm, \
|
||||||
${jprt.my.solaris.x64}-{product|fastdebug}-c2-GCBasher_SerialGC, \
|
${jprt.my.solaris.x64}-{product|fastdebug}-c2-GCBasher_SerialGC, \
|
||||||
${jprt.my.solaris.x64}-{product|fastdebug}-c2-GCBasher_ParallelGC, \
|
${jprt.my.solaris.x64}-{product|fastdebug}-c2-GCBasher_ParallelGC, \
|
||||||
${jprt.my.solaris.x64}-{product|fastdebug}-c2-GCBasher_ParNewGC, \
|
${jprt.my.solaris.x64}-{product|fastdebug}-c2-GCBasher_ParNewGC, \
|
||||||
@ -175,9 +176,11 @@ jprt.my.linux.i586.test.targets = \
|
|||||||
${jprt.my.linux.i586}-{product|fastdebug}-{c1|c2}-jvm98, \
|
${jprt.my.linux.i586}-{product|fastdebug}-{c1|c2}-jvm98, \
|
||||||
${jprt.my.linux.i586}-{product|fastdebug}-c2-jvm98_nontiered, \
|
${jprt.my.linux.i586}-{product|fastdebug}-c2-jvm98_nontiered, \
|
||||||
${jprt.my.linux.i586}-{product|fastdebug}-{c1|c2}-scimark, \
|
${jprt.my.linux.i586}-{product|fastdebug}-{c1|c2}-scimark, \
|
||||||
${jprt.my.linux.i586}-product-c1-runThese_Xcomp, \
|
${jprt.my.linux.i586}-product-c1-runThese8_Xcomp_lang, \
|
||||||
${jprt.my.linux.i586}-fastdebug-c1-runThese_Xshare, \
|
${jprt.my.linux.i586}-product-c1-runThese8_Xcomp_vm, \
|
||||||
${jprt.my.linux.i586}-fastdebug-c2-runThese_Xcomp, \
|
${jprt.my.linux.i586}-fastdebug-c1-runThese8_Xshare, \
|
||||||
|
${jprt.my.linux.i586}-fastdebug-c2-runThese8_Xcomp_lang, \
|
||||||
|
${jprt.my.linux.i586}-fastdebug-c2-runThese8_Xcomp_vm, \
|
||||||
${jprt.my.linux.i586}-{product|fastdebug}-{c1|c2}-GCBasher_SerialGC, \
|
${jprt.my.linux.i586}-{product|fastdebug}-{c1|c2}-GCBasher_SerialGC, \
|
||||||
${jprt.my.linux.i586}-{product|fastdebug}-{c1|c2}-GCBasher_ParallelGC, \
|
${jprt.my.linux.i586}-{product|fastdebug}-{c1|c2}-GCBasher_ParallelGC, \
|
||||||
${jprt.my.linux.i586}-{product|fastdebug}-{c1|c2}-GCBasher_ParNewGC, \
|
${jprt.my.linux.i586}-{product|fastdebug}-{c1|c2}-GCBasher_ParNewGC, \
|
||||||
@ -243,9 +246,10 @@ jprt.my.windows.i586.test.targets = \
|
|||||||
${jprt.my.windows.i586}-{product|fastdebug}-{c1|c2}-jvm98, \
|
${jprt.my.windows.i586}-{product|fastdebug}-{c1|c2}-jvm98, \
|
||||||
${jprt.my.windows.i586}-{product|fastdebug}-c2-jvm98_nontiered, \
|
${jprt.my.windows.i586}-{product|fastdebug}-c2-jvm98_nontiered, \
|
||||||
${jprt.my.windows.i586}-{product|fastdebug}-{c1|c2}-scimark, \
|
${jprt.my.windows.i586}-{product|fastdebug}-{c1|c2}-scimark, \
|
||||||
${jprt.my.windows.i586}-product-{c1|c2}-runThese, \
|
${jprt.my.windows.i586}-product-{c1|c2}-runThese8, \
|
||||||
${jprt.my.windows.i586}-product-{c1|c2}-runThese_Xcomp, \
|
${jprt.my.windows.i586}-product-{c1|c2}-runThese8_Xcomp_lang, \
|
||||||
${jprt.my.windows.i586}-fastdebug-c1-runThese_Xshare, \
|
${jprt.my.windows.i586}-product-{c1|c2}-runThese8_Xcomp_vm, \
|
||||||
|
${jprt.my.windows.i586}-fastdebug-c1-runThese8_Xshare, \
|
||||||
${jprt.my.windows.i586}-{product|fastdebug}-{c1|c2}-GCBasher_SerialGC, \
|
${jprt.my.windows.i586}-{product|fastdebug}-{c1|c2}-GCBasher_SerialGC, \
|
||||||
${jprt.my.windows.i586}-{product|fastdebug}-{c1|c2}-GCBasher_ParallelGC, \
|
${jprt.my.windows.i586}-{product|fastdebug}-{c1|c2}-GCBasher_ParallelGC, \
|
||||||
${jprt.my.windows.i586}-{product|fastdebug}-{c1|c2}-GCBasher_ParNewGC, \
|
${jprt.my.windows.i586}-{product|fastdebug}-{c1|c2}-GCBasher_ParNewGC, \
|
||||||
@ -269,8 +273,9 @@ jprt.my.windows.x64.test.targets = \
|
|||||||
${jprt.my.windows.x64}-{product|fastdebug}-c2-jvm98, \
|
${jprt.my.windows.x64}-{product|fastdebug}-c2-jvm98, \
|
||||||
${jprt.my.windows.x64}-{product|fastdebug}-c2-jvm98_nontiered, \
|
${jprt.my.windows.x64}-{product|fastdebug}-c2-jvm98_nontiered, \
|
||||||
${jprt.my.windows.x64}-{product|fastdebug}-c2-scimark, \
|
${jprt.my.windows.x64}-{product|fastdebug}-c2-scimark, \
|
||||||
${jprt.my.windows.x64}-product-c2-runThese, \
|
${jprt.my.windows.x64}-product-c2-runThese8, \
|
||||||
${jprt.my.windows.x64}-product-c2-runThese_Xcomp, \
|
${jprt.my.windows.x64}-product-c2-runThese8_Xcomp_lang, \
|
||||||
|
${jprt.my.windows.x64}-product-c2-runThese8_Xcomp_vm, \
|
||||||
${jprt.my.windows.x64}-{product|fastdebug}-c2-GCBasher_SerialGC, \
|
${jprt.my.windows.x64}-{product|fastdebug}-c2-GCBasher_SerialGC, \
|
||||||
${jprt.my.windows.x64}-{product|fastdebug}-c2-GCBasher_ParallelGC, \
|
${jprt.my.windows.x64}-{product|fastdebug}-c2-GCBasher_ParallelGC, \
|
||||||
${jprt.my.windows.x64}-{product|fastdebug}-c2-GCBasher_ParNewGC, \
|
${jprt.my.windows.x64}-{product|fastdebug}-c2-GCBasher_ParNewGC, \
|
||||||
|
@ -36,7 +36,6 @@
|
|||||||
#include "runtime/signature.hpp"
|
#include "runtime/signature.hpp"
|
||||||
#include "runtime/stubCodeGenerator.hpp"
|
#include "runtime/stubCodeGenerator.hpp"
|
||||||
#include "runtime/stubRoutines.hpp"
|
#include "runtime/stubRoutines.hpp"
|
||||||
#include "vmreg_ppc.inline.hpp"
|
|
||||||
#ifdef COMPILER1
|
#ifdef COMPILER1
|
||||||
#include "c1/c1_Runtime1.hpp"
|
#include "c1/c1_Runtime1.hpp"
|
||||||
#include "runtime/vframeArray.hpp"
|
#include "runtime/vframeArray.hpp"
|
||||||
@ -155,15 +154,6 @@ void frame::patch_pc(Thread* thread, address pc) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void frame::pd_gc_epilog() {
|
|
||||||
if (is_interpreted_frame()) {
|
|
||||||
// Set constant pool cache entry for interpreter.
|
|
||||||
Method* m = interpreter_frame_method();
|
|
||||||
|
|
||||||
*interpreter_frame_cpoolcache_addr() = m->constants()->cache();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool frame::is_interpreted_frame_valid(JavaThread* thread) const {
|
bool frame::is_interpreted_frame_valid(JavaThread* thread) const {
|
||||||
// Is there anything to do?
|
// Is there anything to do?
|
||||||
assert(is_interpreted_frame(), "Not an interpreted frame");
|
assert(is_interpreted_frame(), "Not an interpreted frame");
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* Copyright 2012, 2014 SAP AG. All rights reserved.
|
* Copyright 2012, 2014 SAP AG. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
@ -27,6 +27,7 @@
|
|||||||
#define CPU_PPC_VM_FRAME_PPC_INLINE_HPP
|
#define CPU_PPC_VM_FRAME_PPC_INLINE_HPP
|
||||||
|
|
||||||
#include "code/codeCache.hpp"
|
#include "code/codeCache.hpp"
|
||||||
|
#include "code/vmreg.inline.hpp"
|
||||||
|
|
||||||
// Inline functions for ppc64 frames:
|
// Inline functions for ppc64 frames:
|
||||||
|
|
||||||
@ -134,12 +135,12 @@ inline intptr_t** frame::interpreter_frame_locals_addr() const {
|
|||||||
return (intptr_t**)&istate->_locals;
|
return (intptr_t**)&istate->_locals;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline intptr_t* frame::interpreter_frame_bcx_addr() const {
|
inline intptr_t* frame::interpreter_frame_bcp_addr() const {
|
||||||
interpreterState istate = get_interpreterState();
|
interpreterState istate = get_interpreterState();
|
||||||
return (intptr_t*)&istate->_bcp;
|
return (intptr_t*)&istate->_bcp;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline intptr_t* frame::interpreter_frame_mdx_addr() const {
|
inline intptr_t* frame::interpreter_frame_mdp_addr() const {
|
||||||
interpreterState istate = get_interpreterState();
|
interpreterState istate = get_interpreterState();
|
||||||
return (intptr_t*)&istate->_mdx;
|
return (intptr_t*)&istate->_mdx;
|
||||||
}
|
}
|
||||||
@ -209,10 +210,10 @@ inline frame::ijava_state* frame::get_ijava_state() const {
|
|||||||
inline intptr_t** frame::interpreter_frame_locals_addr() const {
|
inline intptr_t** frame::interpreter_frame_locals_addr() const {
|
||||||
return (intptr_t**) &(get_ijava_state()->locals);
|
return (intptr_t**) &(get_ijava_state()->locals);
|
||||||
}
|
}
|
||||||
inline intptr_t* frame::interpreter_frame_bcx_addr() const {
|
inline intptr_t* frame::interpreter_frame_bcp_addr() const {
|
||||||
return (intptr_t*) &(get_ijava_state()->bcp);
|
return (intptr_t*) &(get_ijava_state()->bcp);
|
||||||
}
|
}
|
||||||
inline intptr_t* frame::interpreter_frame_mdx_addr() const {
|
inline intptr_t* frame::interpreter_frame_mdp_addr() const {
|
||||||
return (intptr_t*) &(get_ijava_state()->mdx);
|
return (intptr_t*) &(get_ijava_state()->mdx);
|
||||||
}
|
}
|
||||||
// Pointer beyond the "oldest/deepest" BasicObjectLock on stack.
|
// Pointer beyond the "oldest/deepest" BasicObjectLock on stack.
|
||||||
|
@ -68,7 +68,6 @@ int ICache::ppc64_flush_icache(address start, int lines, int magic) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ICacheStubGenerator::generate_icache_flush(ICache::flush_icache_stub_t* flush_icache_stub) {
|
void ICacheStubGenerator::generate_icache_flush(ICache::flush_icache_stub_t* flush_icache_stub) {
|
||||||
StubCodeMark mark(this, "ICache", "flush_icache_stub");
|
|
||||||
|
|
||||||
*flush_icache_stub = (ICache::flush_icache_stub_t)ICache::ppc64_flush_icache;
|
*flush_icache_stub = (ICache::flush_icache_stub_t)ICache::ppc64_flush_icache;
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* Copyright 2012, 2013 SAP AG. All rights reserved.
|
* Copyright 2012, 2014 SAP AG. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -26,6 +26,7 @@
|
|||||||
#ifndef CPU_PPC_VM_INTERPRETERRT_PPC_HPP
|
#ifndef CPU_PPC_VM_INTERPRETERRT_PPC_HPP
|
||||||
#define CPU_PPC_VM_INTERPRETERRT_PPC_HPP
|
#define CPU_PPC_VM_INTERPRETERRT_PPC_HPP
|
||||||
|
|
||||||
|
#include "asm/macroAssembler.hpp"
|
||||||
#include "memory/allocation.hpp"
|
#include "memory/allocation.hpp"
|
||||||
|
|
||||||
// native method calls
|
// native method calls
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
#include "interpreter/interpreter.hpp"
|
#include "interpreter/interpreter.hpp"
|
||||||
#include "interpreter/interpreterGenerator.hpp"
|
#include "interpreter/interpreterGenerator.hpp"
|
||||||
#include "interpreter/interpreterRuntime.hpp"
|
#include "interpreter/interpreterRuntime.hpp"
|
||||||
|
#include "interpreter/interp_masm.hpp"
|
||||||
#include "interpreter/templateTable.hpp"
|
#include "interpreter/templateTable.hpp"
|
||||||
#include "oops/arrayOop.hpp"
|
#include "oops/arrayOop.hpp"
|
||||||
#include "oops/methodData.hpp"
|
#include "oops/methodData.hpp"
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
#include "memory/resourceArea.hpp"
|
#include "memory/resourceArea.hpp"
|
||||||
#include "prims/methodHandles.hpp"
|
#include "prims/methodHandles.hpp"
|
||||||
#include "runtime/biasedLocking.hpp"
|
#include "runtime/biasedLocking.hpp"
|
||||||
|
#include "runtime/icache.hpp"
|
||||||
#include "runtime/interfaceSupport.hpp"
|
#include "runtime/interfaceSupport.hpp"
|
||||||
#include "runtime/objectMonitor.hpp"
|
#include "runtime/objectMonitor.hpp"
|
||||||
#include "runtime/os.hpp"
|
#include "runtime/os.hpp"
|
||||||
|
@ -267,7 +267,7 @@ register %{
|
|||||||
// It's worth about 1% on SPEC geomean to get this right.
|
// It's worth about 1% on SPEC geomean to get this right.
|
||||||
|
|
||||||
// Chunk0, chunk1, and chunk2 form the MachRegisterNumbers enumeration
|
// Chunk0, chunk1, and chunk2 form the MachRegisterNumbers enumeration
|
||||||
// in adGlobals_ppc64.hpp which defines the <register>_num values, e.g.
|
// in adGlobals_ppc.hpp which defines the <register>_num values, e.g.
|
||||||
// R3_num. Therefore, R3_num may not be (and in reality is not)
|
// R3_num. Therefore, R3_num may not be (and in reality is not)
|
||||||
// the same as R3->encoding()! Furthermore, we cannot make any
|
// the same as R3->encoding()! Furthermore, we cannot make any
|
||||||
// assumptions on ordering, e.g. R3_num may be less than R2_num.
|
// assumptions on ordering, e.g. R3_num may be less than R2_num.
|
||||||
@ -1632,7 +1632,7 @@ enum RC { rc_bad, rc_int, rc_float, rc_stack };
|
|||||||
static enum RC rc_class(OptoReg::Name reg) {
|
static enum RC rc_class(OptoReg::Name reg) {
|
||||||
// Return the register class for the given register. The given register
|
// Return the register class for the given register. The given register
|
||||||
// reg is a <register>_num value, which is an index into the MachRegisterNumbers
|
// reg is a <register>_num value, which is an index into the MachRegisterNumbers
|
||||||
// enumeration in adGlobals_ppc64.hpp.
|
// enumeration in adGlobals_ppc.hpp.
|
||||||
|
|
||||||
if (reg == OptoReg::Bad) return rc_bad;
|
if (reg == OptoReg::Bad) return rc_bad;
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* Copyright 2012, 2014 SAP AG. All rights reserved.
|
* Copyright 2012, 2014 SAP AG. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
@ -27,7 +27,6 @@
|
|||||||
#define CPU_PPC_VM_REGISTER_PPC_HPP
|
#define CPU_PPC_VM_REGISTER_PPC_HPP
|
||||||
|
|
||||||
#include "asm/register.hpp"
|
#include "asm/register.hpp"
|
||||||
#include "vm_version_ppc.hpp"
|
|
||||||
|
|
||||||
// forward declaration
|
// forward declaration
|
||||||
class Address;
|
class Address;
|
||||||
@ -92,8 +91,8 @@ class RegisterImpl: public AbstractRegisterImpl {
|
|||||||
inline friend Register as_Register(int encoding);
|
inline friend Register as_Register(int encoding);
|
||||||
|
|
||||||
// accessors
|
// accessors
|
||||||
int encoding() const { assert(is_valid(), "invalid register"); return value(); }
|
int encoding() const { assert(is_valid(), "invalid register"); return value(); }
|
||||||
VMReg as_VMReg();
|
inline VMReg as_VMReg();
|
||||||
Register successor() const { return as_Register(encoding() + 1); }
|
Register successor() const { return as_Register(encoding() + 1); }
|
||||||
|
|
||||||
// testers
|
// testers
|
||||||
@ -208,8 +207,8 @@ class ConditionRegisterImpl: public AbstractRegisterImpl {
|
|||||||
inline friend ConditionRegister as_ConditionRegister(int encoding);
|
inline friend ConditionRegister as_ConditionRegister(int encoding);
|
||||||
|
|
||||||
// accessors
|
// accessors
|
||||||
int encoding() const { assert(is_valid(), "invalid register"); return value(); }
|
int encoding() const { assert(is_valid(), "invalid register"); return value(); }
|
||||||
VMReg as_VMReg();
|
inline VMReg as_VMReg();
|
||||||
|
|
||||||
// testers
|
// testers
|
||||||
bool is_valid() const { return (0 <= value() && value() < number_of_registers); }
|
bool is_valid() const { return (0 <= value() && value() < number_of_registers); }
|
||||||
@ -264,7 +263,7 @@ class FloatRegisterImpl: public AbstractRegisterImpl {
|
|||||||
|
|
||||||
// accessors
|
// accessors
|
||||||
int encoding() const { assert(is_valid(), "invalid register"); return value(); }
|
int encoding() const { assert(is_valid(), "invalid register"); return value(); }
|
||||||
VMReg as_VMReg();
|
inline VMReg as_VMReg();
|
||||||
FloatRegister successor() const { return as_FloatRegister(encoding() + 1); }
|
FloatRegister successor() const { return as_FloatRegister(encoding() + 1); }
|
||||||
|
|
||||||
// testers
|
// testers
|
||||||
@ -365,7 +364,7 @@ class SpecialRegisterImpl: public AbstractRegisterImpl {
|
|||||||
|
|
||||||
// accessors
|
// accessors
|
||||||
int encoding() const { assert(is_valid(), "invalid register"); return value(); }
|
int encoding() const { assert(is_valid(), "invalid register"); return value(); }
|
||||||
VMReg as_VMReg();
|
inline VMReg as_VMReg();
|
||||||
|
|
||||||
// testers
|
// testers
|
||||||
bool is_valid() const { return 0 <= value() && value() < number_of_registers; }
|
bool is_valid() const { return 0 <= value() && value() < number_of_registers; }
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* Copyright 2012, 2013 SAP AG. All rights reserved.
|
* Copyright 2012, 2014 SAP AG. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -30,6 +30,7 @@
|
|||||||
#include "classfile/systemDictionary.hpp"
|
#include "classfile/systemDictionary.hpp"
|
||||||
#include "code/vmreg.hpp"
|
#include "code/vmreg.hpp"
|
||||||
#include "interpreter/interpreter.hpp"
|
#include "interpreter/interpreter.hpp"
|
||||||
|
#include "interpreter/interp_masm.hpp"
|
||||||
#include "nativeInst_ppc.hpp"
|
#include "nativeInst_ppc.hpp"
|
||||||
#include "opto/runtime.hpp"
|
#include "opto/runtime.hpp"
|
||||||
#include "runtime/interfaceSupport.hpp"
|
#include "runtime/interfaceSupport.hpp"
|
||||||
@ -37,7 +38,6 @@
|
|||||||
#include "runtime/stubRoutines.hpp"
|
#include "runtime/stubRoutines.hpp"
|
||||||
#include "runtime/vframeArray.hpp"
|
#include "runtime/vframeArray.hpp"
|
||||||
#include "utilities/globalDefinitions.hpp"
|
#include "utilities/globalDefinitions.hpp"
|
||||||
#include "vmreg_ppc.inline.hpp"
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define __ masm->
|
#define __ masm->
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* Copyright 2012, 2014 SAP AG. All rights reserved.
|
* Copyright 2012, 2014 SAP AG. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
@ -29,16 +29,17 @@
|
|||||||
#include "code/icBuffer.hpp"
|
#include "code/icBuffer.hpp"
|
||||||
#include "code/vtableStubs.hpp"
|
#include "code/vtableStubs.hpp"
|
||||||
#include "interpreter/interpreter.hpp"
|
#include "interpreter/interpreter.hpp"
|
||||||
|
#include "interpreter/interp_masm.hpp"
|
||||||
#include "oops/compiledICHolder.hpp"
|
#include "oops/compiledICHolder.hpp"
|
||||||
#include "prims/jvmtiRedefineClassesTrace.hpp"
|
#include "prims/jvmtiRedefineClassesTrace.hpp"
|
||||||
#include "runtime/sharedRuntime.hpp"
|
#include "runtime/sharedRuntime.hpp"
|
||||||
#include "runtime/vframeArray.hpp"
|
#include "runtime/vframeArray.hpp"
|
||||||
#include "vmreg_ppc.inline.hpp"
|
#include "vmreg_ppc.inline.hpp"
|
||||||
#include "adfiles/ad_ppc_64.hpp"
|
|
||||||
#ifdef COMPILER1
|
#ifdef COMPILER1
|
||||||
#include "c1/c1_Runtime1.hpp"
|
#include "c1/c1_Runtime1.hpp"
|
||||||
#endif
|
#endif
|
||||||
#ifdef COMPILER2
|
#ifdef COMPILER2
|
||||||
|
#include "adfiles/ad_ppc_64.hpp"
|
||||||
#include "opto/runtime.hpp"
|
#include "opto/runtime.hpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* Copyright 2012, 2014 SAP AG. All rights reserved.
|
* Copyright 2012, 2014 SAP AG. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
@ -401,11 +401,11 @@ class StubGenerator: public StubCodeGenerator {
|
|||||||
__ load_const(exception_file, (void*)__FILE__);
|
__ load_const(exception_file, (void*)__FILE__);
|
||||||
__ load_const(exception_line, (void*)__LINE__);
|
__ load_const(exception_line, (void*)__LINE__);
|
||||||
|
|
||||||
__ std(R3_ARG1, thread_(pending_exception));
|
__ std(R3_ARG1, in_bytes(JavaThread::pending_exception_offset()), R16_thread);
|
||||||
// store into `char *'
|
// store into `char *'
|
||||||
__ std(exception_file, thread_(exception_file));
|
__ std(exception_file, in_bytes(JavaThread::exception_file_offset()), R16_thread);
|
||||||
// store into `int'
|
// store into `int'
|
||||||
__ stw(exception_line, thread_(exception_line));
|
__ stw(exception_line, in_bytes(JavaThread::exception_line_offset()), R16_thread);
|
||||||
|
|
||||||
// complete return to VM
|
// complete return to VM
|
||||||
assert(StubRoutines::_call_stub_return_address != NULL, "must have been generated before");
|
assert(StubRoutines::_call_stub_return_address != NULL, "must have been generated before");
|
||||||
@ -524,8 +524,6 @@ class StubGenerator: public StubCodeGenerator {
|
|||||||
int frame_size_in_bytes = frame::abi_reg_args_size;
|
int frame_size_in_bytes = frame::abi_reg_args_size;
|
||||||
OopMap* map = new OopMap(frame_size_in_bytes / sizeof(jint), 0);
|
OopMap* map = new OopMap(frame_size_in_bytes / sizeof(jint), 0);
|
||||||
|
|
||||||
StubCodeMark mark(this, "StubRoutines", "throw_exception");
|
|
||||||
|
|
||||||
address start = __ pc();
|
address start = __ pc();
|
||||||
|
|
||||||
__ save_LR_CR(R11_scratch1);
|
__ save_LR_CR(R11_scratch1);
|
||||||
@ -846,8 +844,6 @@ class StubGenerator: public StubCodeGenerator {
|
|||||||
//
|
//
|
||||||
// Don't generate, rather use C++ code.
|
// Don't generate, rather use C++ code.
|
||||||
address generate_verify_oop() {
|
address generate_verify_oop() {
|
||||||
StubCodeMark mark(this, "StubRoutines", "verify_oop");
|
|
||||||
|
|
||||||
// this is actually a `FunctionDescriptor*'.
|
// this is actually a `FunctionDescriptor*'.
|
||||||
address start = 0;
|
address start = 0;
|
||||||
|
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
#include "interpreter/interpreter.hpp"
|
#include "interpreter/interpreter.hpp"
|
||||||
#include "interpreter/interpreterGenerator.hpp"
|
#include "interpreter/interpreterGenerator.hpp"
|
||||||
#include "interpreter/interpreterRuntime.hpp"
|
#include "interpreter/interpreterRuntime.hpp"
|
||||||
|
#include "interpreter/interp_masm.hpp"
|
||||||
#include "interpreter/templateTable.hpp"
|
#include "interpreter/templateTable.hpp"
|
||||||
#include "oops/arrayOop.hpp"
|
#include "oops/arrayOop.hpp"
|
||||||
#include "oops/methodData.hpp"
|
#include "oops/methodData.hpp"
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
#include "asm/macroAssembler.inline.hpp"
|
#include "asm/macroAssembler.inline.hpp"
|
||||||
#include "interpreter/interpreter.hpp"
|
#include "interpreter/interpreter.hpp"
|
||||||
#include "interpreter/interpreterRuntime.hpp"
|
#include "interpreter/interpreterRuntime.hpp"
|
||||||
|
#include "interpreter/interp_masm.hpp"
|
||||||
#include "interpreter/templateInterpreter.hpp"
|
#include "interpreter/templateInterpreter.hpp"
|
||||||
#include "interpreter/templateTable.hpp"
|
#include "interpreter/templateTable.hpp"
|
||||||
#include "memory/universe.inline.hpp"
|
#include "memory/universe.inline.hpp"
|
||||||
|
@ -26,10 +26,28 @@
|
|||||||
#ifndef CPU_PPC_VM_VMREG_PPC_HPP
|
#ifndef CPU_PPC_VM_VMREG_PPC_HPP
|
||||||
#define CPU_PPC_VM_VMREG_PPC_HPP
|
#define CPU_PPC_VM_VMREG_PPC_HPP
|
||||||
|
|
||||||
bool is_Register();
|
inline bool is_Register() {
|
||||||
Register as_Register();
|
return (unsigned int)value() < (unsigned int)ConcreteRegisterImpl::max_gpr;
|
||||||
|
}
|
||||||
|
|
||||||
bool is_FloatRegister();
|
inline bool is_FloatRegister() {
|
||||||
FloatRegister as_FloatRegister();
|
return value() >= ConcreteRegisterImpl::max_gpr &&
|
||||||
|
value() < ConcreteRegisterImpl::max_fpr;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline Register as_Register() {
|
||||||
|
assert(is_Register() && is_even(value()), "even-aligned GPR name");
|
||||||
|
return ::as_Register(value()>>1);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline FloatRegister as_FloatRegister() {
|
||||||
|
assert(is_FloatRegister() && is_even(value()), "must be");
|
||||||
|
return ::as_FloatRegister((value() - ConcreteRegisterImpl::max_gpr) >> 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool is_concrete() {
|
||||||
|
assert(is_reg(), "must be");
|
||||||
|
return is_even(value());
|
||||||
|
}
|
||||||
|
|
||||||
#endif // CPU_PPC_VM_VMREG_PPC_HPP
|
#endif // CPU_PPC_VM_VMREG_PPC_HPP
|
||||||
|
@ -44,28 +44,5 @@ inline VMReg SpecialRegisterImpl::as_VMReg() {
|
|||||||
return VMRegImpl::as_VMReg((encoding()) + ConcreteRegisterImpl::max_cnd);
|
return VMRegImpl::as_VMReg((encoding()) + ConcreteRegisterImpl::max_cnd);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool VMRegImpl::is_Register() {
|
|
||||||
return (unsigned int)value() < (unsigned int)ConcreteRegisterImpl::max_gpr;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool VMRegImpl::is_FloatRegister() {
|
|
||||||
return value() >= ConcreteRegisterImpl::max_gpr &&
|
|
||||||
value() < ConcreteRegisterImpl::max_fpr;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline Register VMRegImpl::as_Register() {
|
|
||||||
assert(is_Register() && is_even(value()), "even-aligned GPR name");
|
|
||||||
return ::as_Register(value()>>1);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline FloatRegister VMRegImpl::as_FloatRegister() {
|
|
||||||
assert(is_FloatRegister() && is_even(value()), "must be");
|
|
||||||
return ::as_FloatRegister((value() - ConcreteRegisterImpl::max_gpr) >> 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool VMRegImpl::is_concrete() {
|
|
||||||
assert(is_reg(), "must be");
|
|
||||||
return is_even(value());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // CPU_PPC_VM_VMREG_PPC_INLINE_HPP
|
#endif // CPU_PPC_VM_VMREG_PPC_INLINE_HPP
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -31,7 +31,6 @@
|
|||||||
#include "oops/compiledICHolder.hpp"
|
#include "oops/compiledICHolder.hpp"
|
||||||
#include "oops/oop.inline.hpp"
|
#include "oops/oop.inline.hpp"
|
||||||
#include "prims/jvmtiExport.hpp"
|
#include "prims/jvmtiExport.hpp"
|
||||||
#include "register_sparc.hpp"
|
|
||||||
#include "runtime/sharedRuntime.hpp"
|
#include "runtime/sharedRuntime.hpp"
|
||||||
#include "runtime/signature.hpp"
|
#include "runtime/signature.hpp"
|
||||||
#include "runtime/vframeArray.hpp"
|
#include "runtime/vframeArray.hpp"
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -23,6 +23,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "precompiled.hpp"
|
#include "precompiled.hpp"
|
||||||
|
#include "code/codeCache.hpp"
|
||||||
#include "interpreter/interpreter.hpp"
|
#include "interpreter/interpreter.hpp"
|
||||||
#include "memory/resourceArea.hpp"
|
#include "memory/resourceArea.hpp"
|
||||||
#include "oops/markOop.hpp"
|
#include "oops/markOop.hpp"
|
||||||
@ -593,17 +594,6 @@ bool frame::interpreter_frame_equals_unpacked_fp(intptr_t* fp) {
|
|||||||
return this->fp() == fp;
|
return this->fp() == fp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void frame::pd_gc_epilog() {
|
|
||||||
if (is_interpreted_frame()) {
|
|
||||||
// set constant pool cache entry for interpreter
|
|
||||||
Method* m = interpreter_frame_method();
|
|
||||||
|
|
||||||
*interpreter_frame_cpoolcache_addr() = m->constants()->cache();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bool frame::is_interpreted_frame_valid(JavaThread* thread) const {
|
bool frame::is_interpreted_frame_valid(JavaThread* thread) const {
|
||||||
#ifdef CC_INTERP
|
#ifdef CC_INTERP
|
||||||
// Is there anything to do?
|
// Is there anything to do?
|
||||||
@ -641,10 +631,10 @@ bool frame::is_interpreted_frame_valid(JavaThread* thread) const {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// validate bci/bcx
|
// validate bci/bcp
|
||||||
|
|
||||||
intptr_t bcx = interpreter_frame_bcx();
|
address bcp = interpreter_frame_bcp();
|
||||||
if (m->validate_bci_from_bcx(bcx) < 0) {
|
if (m->validate_bci_from_bcp(bcp) < 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -78,7 +78,6 @@
|
|||||||
// Lesp first free element of expression stack
|
// Lesp first free element of expression stack
|
||||||
// (which grows towards __higher__ addresses)
|
// (which grows towards __higher__ addresses)
|
||||||
// Lbcp is set to address of bytecode to execute
|
// Lbcp is set to address of bytecode to execute
|
||||||
// It is accessed in the frame under the name "bcx".
|
|
||||||
// It may at times (during GC) be an index instead.
|
// It may at times (during GC) be an index instead.
|
||||||
// Lmethod the method being interpreted
|
// Lmethod the method being interpreted
|
||||||
// Llocals the base pointer for accessing the locals array
|
// Llocals the base pointer for accessing the locals array
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -26,6 +26,7 @@
|
|||||||
#define CPU_SPARC_VM_FRAME_SPARC_INLINE_HPP
|
#define CPU_SPARC_VM_FRAME_SPARC_INLINE_HPP
|
||||||
|
|
||||||
#include "asm/macroAssembler.hpp"
|
#include "asm/macroAssembler.hpp"
|
||||||
|
#include "code/vmreg.inline.hpp"
|
||||||
|
|
||||||
// Inline functions for SPARC frames:
|
// Inline functions for SPARC frames:
|
||||||
|
|
||||||
@ -98,12 +99,12 @@ inline intptr_t** frame::interpreter_frame_locals_addr() const {
|
|||||||
return (intptr_t**) &istate->_locals;
|
return (intptr_t**) &istate->_locals;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline intptr_t* frame::interpreter_frame_bcx_addr() const {
|
inline intptr_t* frame::interpreter_frame_bcp_addr() const {
|
||||||
interpreterState istate = get_interpreterState();
|
interpreterState istate = get_interpreterState();
|
||||||
return (intptr_t*) &istate->_bcp;
|
return (intptr_t*) &istate->_bcp;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline intptr_t* frame::interpreter_frame_mdx_addr() const {
|
inline intptr_t* frame::interpreter_frame_mdp_addr() const {
|
||||||
interpreterState istate = get_interpreterState();
|
interpreterState istate = get_interpreterState();
|
||||||
return (intptr_t*) &istate->_mdx;
|
return (intptr_t*) &istate->_mdx;
|
||||||
}
|
}
|
||||||
@ -165,12 +166,11 @@ inline intptr_t** frame::interpreter_frame_locals_addr() const {
|
|||||||
return (intptr_t**) sp_addr_at( Llocals->sp_offset_in_saved_window());
|
return (intptr_t**) sp_addr_at( Llocals->sp_offset_in_saved_window());
|
||||||
}
|
}
|
||||||
|
|
||||||
inline intptr_t* frame::interpreter_frame_bcx_addr() const {
|
inline intptr_t* frame::interpreter_frame_bcp_addr() const {
|
||||||
// %%%%% reinterpreting Lbcp as a bcx
|
|
||||||
return (intptr_t*) sp_addr_at( Lbcp->sp_offset_in_saved_window());
|
return (intptr_t*) sp_addr_at( Lbcp->sp_offset_in_saved_window());
|
||||||
}
|
}
|
||||||
|
|
||||||
inline intptr_t* frame::interpreter_frame_mdx_addr() const {
|
inline intptr_t* frame::interpreter_frame_mdp_addr() const {
|
||||||
// %%%%% reinterpreting ImethodDataPtr as a mdx
|
// %%%%% reinterpreting ImethodDataPtr as a mdx
|
||||||
return (intptr_t*) sp_addr_at( ImethodDataPtr->sp_offset_in_saved_window());
|
return (intptr_t*) sp_addr_at( ImethodDataPtr->sp_offset_in_saved_window());
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "precompiled.hpp"
|
#include "precompiled.hpp"
|
||||||
|
#include "asm/macroAssembler.inline.hpp"
|
||||||
#include "interpreter/interpreter.hpp"
|
#include "interpreter/interpreter.hpp"
|
||||||
#include "interpreter/interpreterRuntime.hpp"
|
#include "interpreter/interpreterRuntime.hpp"
|
||||||
#include "memory/allocation.inline.hpp"
|
#include "memory/allocation.inline.hpp"
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -28,6 +28,7 @@
|
|||||||
#include "interpreter/interpreter.hpp"
|
#include "interpreter/interpreter.hpp"
|
||||||
#include "interpreter/interpreterGenerator.hpp"
|
#include "interpreter/interpreterGenerator.hpp"
|
||||||
#include "interpreter/interpreterRuntime.hpp"
|
#include "interpreter/interpreterRuntime.hpp"
|
||||||
|
#include "interpreter/interp_masm.hpp"
|
||||||
#include "interpreter/templateTable.hpp"
|
#include "interpreter/templateTable.hpp"
|
||||||
#include "oops/arrayOop.hpp"
|
#include "oops/arrayOop.hpp"
|
||||||
#include "oops/methodData.hpp"
|
#include "oops/methodData.hpp"
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "precompiled.hpp"
|
#include "precompiled.hpp"
|
||||||
#include "asm/assembler.inline.hpp"
|
#include "asm/macroAssembler.inline.hpp"
|
||||||
#include "compiler/disassembler.hpp"
|
#include "compiler/disassembler.hpp"
|
||||||
#include "gc_interface/collectedHeap.inline.hpp"
|
#include "gc_interface/collectedHeap.inline.hpp"
|
||||||
#include "interpreter/interpreter.hpp"
|
#include "interpreter/interpreter.hpp"
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -186,8 +186,7 @@ REGISTER_DECLARATION(Register, ImethodDataPtr , I2); // Pointer to the current
|
|||||||
// the interpreter to work right
|
// the interpreter to work right
|
||||||
// (These assignments must be compatible with L7_thread_cache; see above.)
|
// (These assignments must be compatible with L7_thread_cache; see above.)
|
||||||
|
|
||||||
// Since Lbcp points into the middle of the method object,
|
// Lbcp points into the middle of the method object.
|
||||||
// it is temporarily converted into a "bcx" during GC.
|
|
||||||
|
|
||||||
// Exception processing
|
// Exception processing
|
||||||
// These registers are passed into exception handlers.
|
// These registers are passed into exception handlers.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2008, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -25,6 +25,7 @@
|
|||||||
#include "precompiled.hpp"
|
#include "precompiled.hpp"
|
||||||
#include "asm/macroAssembler.hpp"
|
#include "asm/macroAssembler.hpp"
|
||||||
#include "interpreter/interpreter.hpp"
|
#include "interpreter/interpreter.hpp"
|
||||||
|
#include "interpreter/interp_masm.hpp"
|
||||||
#include "memory/allocation.inline.hpp"
|
#include "memory/allocation.inline.hpp"
|
||||||
#include "prims/methodHandles.hpp"
|
#include "prims/methodHandles.hpp"
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -26,7 +26,6 @@
|
|||||||
#define CPU_SPARC_VM_REGISTER_SPARC_HPP
|
#define CPU_SPARC_VM_REGISTER_SPARC_HPP
|
||||||
|
|
||||||
#include "asm/register.hpp"
|
#include "asm/register.hpp"
|
||||||
#include "vm_version_sparc.hpp"
|
|
||||||
|
|
||||||
// forward declaration
|
// forward declaration
|
||||||
class Address;
|
class Address;
|
||||||
@ -65,7 +64,7 @@ class RegisterImpl: public AbstractRegisterImpl {
|
|||||||
friend Register as_oRegister(int number);
|
friend Register as_oRegister(int number);
|
||||||
friend Register as_gRegister(int number);
|
friend Register as_gRegister(int number);
|
||||||
|
|
||||||
VMReg as_VMReg();
|
inline VMReg as_VMReg();
|
||||||
|
|
||||||
// accessors
|
// accessors
|
||||||
int encoding() const { assert(is_valid(), "invalid register"); return value(); }
|
int encoding() const { assert(is_valid(), "invalid register"); return value(); }
|
||||||
@ -234,7 +233,7 @@ class FloatRegisterImpl: public AbstractRegisterImpl {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// construction
|
// construction
|
||||||
VMReg as_VMReg( );
|
inline VMReg as_VMReg( );
|
||||||
|
|
||||||
// accessors
|
// accessors
|
||||||
int encoding() const { assert(is_valid(), "invalid register"); return value(); }
|
int encoding() const { assert(is_valid(), "invalid register"); return value(); }
|
||||||
|
@ -9728,7 +9728,7 @@ instruct cmpN_reg_branch_short(cmpOp cmp, iRegN op1, iRegN op2, label labl, flag
|
|||||||
|
|
||||||
size(4);
|
size(4);
|
||||||
ins_cost(BRANCH_COST);
|
ins_cost(BRANCH_COST);
|
||||||
format %{ "CWB$cmp $op1,op2,$labl\t! compressed ptr" %}
|
format %{ "CWB$cmp $op1,$op2,$labl\t! compressed ptr" %}
|
||||||
ins_encode %{
|
ins_encode %{
|
||||||
Label* L = $labl$$label;
|
Label* L = $labl$$label;
|
||||||
assert(__ use_cbcond(*L), "back to back cbcond");
|
assert(__ use_cbcond(*L), "back to back cbcond");
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -28,6 +28,7 @@
|
|||||||
#include "interpreter/interpreter.hpp"
|
#include "interpreter/interpreter.hpp"
|
||||||
#include "interpreter/interpreterGenerator.hpp"
|
#include "interpreter/interpreterGenerator.hpp"
|
||||||
#include "interpreter/interpreterRuntime.hpp"
|
#include "interpreter/interpreterRuntime.hpp"
|
||||||
|
#include "interpreter/interp_masm.hpp"
|
||||||
#include "interpreter/templateTable.hpp"
|
#include "interpreter/templateTable.hpp"
|
||||||
#include "oops/arrayOop.hpp"
|
#include "oops/arrayOop.hpp"
|
||||||
#include "oops/methodData.hpp"
|
#include "oops/methodData.hpp"
|
||||||
@ -1785,7 +1786,7 @@ void TemplateInterpreterGenerator::generate_throw_exception() {
|
|||||||
__ verify_thread();
|
__ verify_thread();
|
||||||
// expression stack is undefined here
|
// expression stack is undefined here
|
||||||
// O0: exception, i.e. Oexception
|
// O0: exception, i.e. Oexception
|
||||||
// Lbcp: exception bcx
|
// Lbcp: exception bcp
|
||||||
__ verify_oop(Oexception);
|
__ verify_oop(Oexception);
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -25,6 +25,7 @@
|
|||||||
#include "precompiled.hpp"
|
#include "precompiled.hpp"
|
||||||
#include "interpreter/interpreter.hpp"
|
#include "interpreter/interpreter.hpp"
|
||||||
#include "interpreter/interpreterRuntime.hpp"
|
#include "interpreter/interpreterRuntime.hpp"
|
||||||
|
#include "interpreter/interp_masm.hpp"
|
||||||
#include "interpreter/templateTable.hpp"
|
#include "interpreter/templateTable.hpp"
|
||||||
#include "memory/universe.inline.hpp"
|
#include "memory/universe.inline.hpp"
|
||||||
#include "oops/methodData.hpp"
|
#include "oops/methodData.hpp"
|
||||||
|
@ -25,10 +25,35 @@
|
|||||||
#ifndef CPU_SPARC_VM_VMREG_SPARC_HPP
|
#ifndef CPU_SPARC_VM_VMREG_SPARC_HPP
|
||||||
#define CPU_SPARC_VM_VMREG_SPARC_HPP
|
#define CPU_SPARC_VM_VMREG_SPARC_HPP
|
||||||
|
|
||||||
bool is_Register();
|
inline bool is_Register() { return value() >= 0 && value() < ConcreteRegisterImpl::max_gpr; }
|
||||||
Register as_Register();
|
inline bool is_FloatRegister() { return value() >= ConcreteRegisterImpl::max_gpr &&
|
||||||
|
value() < ConcreteRegisterImpl::max_fpr; }
|
||||||
|
inline Register as_Register() {
|
||||||
|
|
||||||
bool is_FloatRegister();
|
assert( is_Register() && is_even(value()), "even-aligned GPR name" );
|
||||||
FloatRegister as_FloatRegister();
|
// Yuk
|
||||||
|
return ::as_Register(value()>>1);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline FloatRegister as_FloatRegister() {
|
||||||
|
assert( is_FloatRegister(), "must be" );
|
||||||
|
// Yuk
|
||||||
|
return ::as_FloatRegister( value() - ConcreteRegisterImpl::max_gpr );
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool is_concrete() {
|
||||||
|
assert(is_reg(), "must be");
|
||||||
|
int v = value();
|
||||||
|
if ( v < ConcreteRegisterImpl::max_gpr ) {
|
||||||
|
return is_even(v);
|
||||||
|
}
|
||||||
|
// F0..F31
|
||||||
|
if ( v <= ConcreteRegisterImpl::max_gpr + 31) return true;
|
||||||
|
if ( v < ConcreteRegisterImpl::max_fpr) {
|
||||||
|
return is_even(v);
|
||||||
|
}
|
||||||
|
assert(false, "what register?");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
#endif // CPU_SPARC_VM_VMREG_SPARC_HPP
|
#endif // CPU_SPARC_VM_VMREG_SPARC_HPP
|
||||||
|
@ -33,35 +33,5 @@ inline VMReg RegisterImpl::as_VMReg() {
|
|||||||
inline VMReg FloatRegisterImpl::as_VMReg() { return VMRegImpl::as_VMReg( ConcreteRegisterImpl::max_gpr + encoding() ); }
|
inline VMReg FloatRegisterImpl::as_VMReg() { return VMRegImpl::as_VMReg( ConcreteRegisterImpl::max_gpr + encoding() ); }
|
||||||
|
|
||||||
|
|
||||||
inline bool VMRegImpl::is_Register() { return value() >= 0 && value() < ConcreteRegisterImpl::max_gpr; }
|
|
||||||
inline bool VMRegImpl::is_FloatRegister() { return value() >= ConcreteRegisterImpl::max_gpr &&
|
|
||||||
value() < ConcreteRegisterImpl::max_fpr; }
|
|
||||||
inline Register VMRegImpl::as_Register() {
|
|
||||||
|
|
||||||
assert( is_Register() && is_even(value()), "even-aligned GPR name" );
|
|
||||||
// Yuk
|
|
||||||
return ::as_Register(value()>>1);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline FloatRegister VMRegImpl::as_FloatRegister() {
|
|
||||||
assert( is_FloatRegister(), "must be" );
|
|
||||||
// Yuk
|
|
||||||
return ::as_FloatRegister( value() - ConcreteRegisterImpl::max_gpr );
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool VMRegImpl::is_concrete() {
|
|
||||||
assert(is_reg(), "must be");
|
|
||||||
int v = value();
|
|
||||||
if ( v < ConcreteRegisterImpl::max_gpr ) {
|
|
||||||
return is_even(v);
|
|
||||||
}
|
|
||||||
// F0..F31
|
|
||||||
if ( v <= ConcreteRegisterImpl::max_gpr + 31) return true;
|
|
||||||
if ( v < ConcreteRegisterImpl::max_fpr) {
|
|
||||||
return is_even(v);
|
|
||||||
}
|
|
||||||
assert(false, "what register?");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // CPU_SPARC_VM_VMREG_SPARC_INLINE_HPP
|
#endif // CPU_SPARC_VM_VMREG_SPARC_INLINE_HPP
|
||||||
|
@ -537,10 +537,6 @@ bool frame::interpreter_frame_equals_unpacked_fp(intptr_t* fp) {
|
|||||||
return _fp == (fp - diff);
|
return _fp == (fp - diff);
|
||||||
}
|
}
|
||||||
|
|
||||||
void frame::pd_gc_epilog() {
|
|
||||||
// nothing done here now
|
|
||||||
}
|
|
||||||
|
|
||||||
bool frame::is_interpreted_frame_valid(JavaThread* thread) const {
|
bool frame::is_interpreted_frame_valid(JavaThread* thread) const {
|
||||||
// QQQ
|
// QQQ
|
||||||
#ifdef CC_INTERP
|
#ifdef CC_INTERP
|
||||||
@ -577,10 +573,10 @@ bool frame::is_interpreted_frame_valid(JavaThread* thread) const {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// validate bci/bcx
|
// validate bci/bcp
|
||||||
|
|
||||||
intptr_t bcx = interpreter_frame_bcx();
|
address bcp = interpreter_frame_bcp();
|
||||||
if (m->validate_bci_from_bcx(bcx) < 0) {
|
if (m->validate_bci_from_bcp(bcp) < 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -692,10 +688,10 @@ void frame::describe_pd(FrameValues& values, int frame_no) {
|
|||||||
DESCRIBE_FP_OFFSET(interpreter_frame_sender_sp);
|
DESCRIBE_FP_OFFSET(interpreter_frame_sender_sp);
|
||||||
DESCRIBE_FP_OFFSET(interpreter_frame_last_sp);
|
DESCRIBE_FP_OFFSET(interpreter_frame_last_sp);
|
||||||
DESCRIBE_FP_OFFSET(interpreter_frame_method);
|
DESCRIBE_FP_OFFSET(interpreter_frame_method);
|
||||||
DESCRIBE_FP_OFFSET(interpreter_frame_mdx);
|
DESCRIBE_FP_OFFSET(interpreter_frame_mdp);
|
||||||
DESCRIBE_FP_OFFSET(interpreter_frame_cache);
|
DESCRIBE_FP_OFFSET(interpreter_frame_cache);
|
||||||
DESCRIBE_FP_OFFSET(interpreter_frame_locals);
|
DESCRIBE_FP_OFFSET(interpreter_frame_locals);
|
||||||
DESCRIBE_FP_OFFSET(interpreter_frame_bcx);
|
DESCRIBE_FP_OFFSET(interpreter_frame_bcp);
|
||||||
DESCRIBE_FP_OFFSET(interpreter_frame_initial_sp);
|
DESCRIBE_FP_OFFSET(interpreter_frame_initial_sp);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -40,7 +40,7 @@
|
|||||||
// ... | monitor block size
|
// ... | monitor block size
|
||||||
// [monitors ] /
|
// [monitors ] /
|
||||||
// [monitor block size ]
|
// [monitor block size ]
|
||||||
// [byte code index/pointr] = bcx() bcx_offset
|
// [byte code pointer ] = bcp() bcp_offset
|
||||||
// [pointer to locals ] = locals() locals_offset
|
// [pointer to locals ] = locals() locals_offset
|
||||||
// [constant pool cache ] = cache() cache_offset
|
// [constant pool cache ] = cache() cache_offset
|
||||||
// [methodData ] = mdp() mdx_offset
|
// [methodData ] = mdp() mdx_offset
|
||||||
@ -111,11 +111,11 @@
|
|||||||
// outgoing sp before a call to an invoked method
|
// outgoing sp before a call to an invoked method
|
||||||
interpreter_frame_last_sp_offset = interpreter_frame_sender_sp_offset - 1,
|
interpreter_frame_last_sp_offset = interpreter_frame_sender_sp_offset - 1,
|
||||||
interpreter_frame_method_offset = interpreter_frame_last_sp_offset - 1,
|
interpreter_frame_method_offset = interpreter_frame_last_sp_offset - 1,
|
||||||
interpreter_frame_mdx_offset = interpreter_frame_method_offset - 1,
|
interpreter_frame_mdp_offset = interpreter_frame_method_offset - 1,
|
||||||
interpreter_frame_cache_offset = interpreter_frame_mdx_offset - 1,
|
interpreter_frame_cache_offset = interpreter_frame_mdp_offset - 1,
|
||||||
interpreter_frame_locals_offset = interpreter_frame_cache_offset - 1,
|
interpreter_frame_locals_offset = interpreter_frame_cache_offset - 1,
|
||||||
interpreter_frame_bcx_offset = interpreter_frame_locals_offset - 1,
|
interpreter_frame_bcp_offset = interpreter_frame_locals_offset - 1,
|
||||||
interpreter_frame_initial_sp_offset = interpreter_frame_bcx_offset - 1,
|
interpreter_frame_initial_sp_offset = interpreter_frame_bcp_offset - 1,
|
||||||
|
|
||||||
interpreter_frame_monitor_block_top_offset = interpreter_frame_initial_sp_offset,
|
interpreter_frame_monitor_block_top_offset = interpreter_frame_initial_sp_offset,
|
||||||
interpreter_frame_monitor_block_bottom_offset = interpreter_frame_initial_sp_offset,
|
interpreter_frame_monitor_block_bottom_offset = interpreter_frame_initial_sp_offset,
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -26,6 +26,7 @@
|
|||||||
#define CPU_X86_VM_FRAME_X86_INLINE_HPP
|
#define CPU_X86_VM_FRAME_X86_INLINE_HPP
|
||||||
|
|
||||||
#include "code/codeCache.hpp"
|
#include "code/codeCache.hpp"
|
||||||
|
#include "code/vmreg.inline.hpp"
|
||||||
|
|
||||||
// Inline functions for Intel frames:
|
// Inline functions for Intel frames:
|
||||||
|
|
||||||
@ -168,7 +169,7 @@ inline intptr_t** frame::interpreter_frame_locals_addr() const {
|
|||||||
return &(get_interpreterState()->_locals);
|
return &(get_interpreterState()->_locals);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline intptr_t* frame::interpreter_frame_bcx_addr() const {
|
inline intptr_t* frame::interpreter_frame_bcp_addr() const {
|
||||||
assert(is_interpreted_frame(), "must be interpreted");
|
assert(is_interpreted_frame(), "must be interpreted");
|
||||||
return (intptr_t*) &(get_interpreterState()->_bcp);
|
return (intptr_t*) &(get_interpreterState()->_bcp);
|
||||||
}
|
}
|
||||||
@ -188,7 +189,7 @@ inline Method** frame::interpreter_frame_method_addr() const {
|
|||||||
return &(get_interpreterState()->_method);
|
return &(get_interpreterState()->_method);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline intptr_t* frame::interpreter_frame_mdx_addr() const {
|
inline intptr_t* frame::interpreter_frame_mdp_addr() const {
|
||||||
assert(is_interpreted_frame(), "must be interpreted");
|
assert(is_interpreted_frame(), "must be interpreted");
|
||||||
return (intptr_t*) &(get_interpreterState()->_mdx);
|
return (intptr_t*) &(get_interpreterState()->_mdx);
|
||||||
}
|
}
|
||||||
@ -210,13 +211,13 @@ inline intptr_t* frame::interpreter_frame_last_sp() const {
|
|||||||
return *(intptr_t**)addr_at(interpreter_frame_last_sp_offset);
|
return *(intptr_t**)addr_at(interpreter_frame_last_sp_offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline intptr_t* frame::interpreter_frame_bcx_addr() const {
|
inline intptr_t* frame::interpreter_frame_bcp_addr() const {
|
||||||
return (intptr_t*)addr_at(interpreter_frame_bcx_offset);
|
return (intptr_t*)addr_at(interpreter_frame_bcp_offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
inline intptr_t* frame::interpreter_frame_mdx_addr() const {
|
inline intptr_t* frame::interpreter_frame_mdp_addr() const {
|
||||||
return (intptr_t*)addr_at(interpreter_frame_mdx_offset);
|
return (intptr_t*)addr_at(interpreter_frame_mdp_offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -134,7 +134,7 @@ void InterpreterMacroAssembler::profile_arguments_type(Register mdp, Register ca
|
|||||||
shll(tmp, exact_log2(DataLayout::cell_size));
|
shll(tmp, exact_log2(DataLayout::cell_size));
|
||||||
addptr(mdp, tmp);
|
addptr(mdp, tmp);
|
||||||
}
|
}
|
||||||
movptr(Address(rbp, frame::interpreter_frame_mdx_offset * wordSize), mdp);
|
movptr(Address(rbp, frame::interpreter_frame_mdp_offset * wordSize), mdp);
|
||||||
} else {
|
} else {
|
||||||
assert(MethodData::profile_return(), "either profile call args or call ret");
|
assert(MethodData::profile_return(), "either profile call args or call ret");
|
||||||
update_mdp_by_constant(mdp, in_bytes(TypeEntriesAtCall::return_only_size()));
|
update_mdp_by_constant(mdp, in_bytes(TypeEntriesAtCall::return_only_size()));
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -826,7 +826,7 @@ void InterpreterMacroAssembler::unlock_object(Register lock_reg) {
|
|||||||
// Test ImethodDataPtr. If it is null, continue at the specified label
|
// Test ImethodDataPtr. If it is null, continue at the specified label
|
||||||
void InterpreterMacroAssembler::test_method_data_pointer(Register mdp, Label& zero_continue) {
|
void InterpreterMacroAssembler::test_method_data_pointer(Register mdp, Label& zero_continue) {
|
||||||
assert(ProfileInterpreter, "must be profiling interpreter");
|
assert(ProfileInterpreter, "must be profiling interpreter");
|
||||||
movptr(mdp, Address(rbp, frame::interpreter_frame_mdx_offset * wordSize));
|
movptr(mdp, Address(rbp, frame::interpreter_frame_mdp_offset * wordSize));
|
||||||
testptr(mdp, mdp);
|
testptr(mdp, mdp);
|
||||||
jcc(Assembler::zero, zero_continue);
|
jcc(Assembler::zero, zero_continue);
|
||||||
}
|
}
|
||||||
@ -853,7 +853,7 @@ void InterpreterMacroAssembler::set_method_data_pointer_for_bcp() {
|
|||||||
addptr(rbx, in_bytes(MethodData::data_offset()));
|
addptr(rbx, in_bytes(MethodData::data_offset()));
|
||||||
addptr(rax, rbx);
|
addptr(rax, rbx);
|
||||||
bind(set_mdp);
|
bind(set_mdp);
|
||||||
movptr(Address(rbp, frame::interpreter_frame_mdx_offset * wordSize), rax);
|
movptr(Address(rbp, frame::interpreter_frame_mdp_offset * wordSize), rax);
|
||||||
pop(rbx);
|
pop(rbx);
|
||||||
pop(rax);
|
pop(rax);
|
||||||
}
|
}
|
||||||
@ -975,7 +975,7 @@ void InterpreterMacroAssembler::update_mdp_by_offset(Register mdp_in, int offset
|
|||||||
assert(ProfileInterpreter, "must be profiling interpreter");
|
assert(ProfileInterpreter, "must be profiling interpreter");
|
||||||
Address disp_address(mdp_in, offset_of_disp);
|
Address disp_address(mdp_in, offset_of_disp);
|
||||||
addptr(mdp_in,disp_address);
|
addptr(mdp_in,disp_address);
|
||||||
movptr(Address(rbp, frame::interpreter_frame_mdx_offset * wordSize), mdp_in);
|
movptr(Address(rbp, frame::interpreter_frame_mdp_offset * wordSize), mdp_in);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -983,14 +983,14 @@ void InterpreterMacroAssembler::update_mdp_by_offset(Register mdp_in, Register r
|
|||||||
assert(ProfileInterpreter, "must be profiling interpreter");
|
assert(ProfileInterpreter, "must be profiling interpreter");
|
||||||
Address disp_address(mdp_in, reg, Address::times_1, offset_of_disp);
|
Address disp_address(mdp_in, reg, Address::times_1, offset_of_disp);
|
||||||
addptr(mdp_in, disp_address);
|
addptr(mdp_in, disp_address);
|
||||||
movptr(Address(rbp, frame::interpreter_frame_mdx_offset * wordSize), mdp_in);
|
movptr(Address(rbp, frame::interpreter_frame_mdp_offset * wordSize), mdp_in);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void InterpreterMacroAssembler::update_mdp_by_constant(Register mdp_in, int constant) {
|
void InterpreterMacroAssembler::update_mdp_by_constant(Register mdp_in, int constant) {
|
||||||
assert(ProfileInterpreter, "must be profiling interpreter");
|
assert(ProfileInterpreter, "must be profiling interpreter");
|
||||||
addptr(mdp_in, constant);
|
addptr(mdp_in, constant);
|
||||||
movptr(Address(rbp, frame::interpreter_frame_mdx_offset * wordSize), mdp_in);
|
movptr(Address(rbp, frame::interpreter_frame_mdp_offset * wordSize), mdp_in);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -61,8 +61,8 @@
|
|||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
void save_bcp() { movptr(Address(rbp, frame::interpreter_frame_bcx_offset * wordSize), rsi); }
|
void save_bcp() { movptr(Address(rbp, frame::interpreter_frame_bcp_offset * wordSize), rsi); }
|
||||||
void restore_bcp() { movptr(rsi, Address(rbp, frame::interpreter_frame_bcx_offset * wordSize)); }
|
void restore_bcp() { movptr(rsi, Address(rbp, frame::interpreter_frame_bcp_offset * wordSize)); }
|
||||||
void restore_locals() { movptr(rdi, Address(rbp, frame::interpreter_frame_locals_offset * wordSize)); }
|
void restore_locals() { movptr(rdi, Address(rbp, frame::interpreter_frame_locals_offset * wordSize)); }
|
||||||
|
|
||||||
// Helpers for runtime call arguments/results
|
// Helpers for runtime call arguments/results
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -841,7 +841,7 @@ void InterpreterMacroAssembler::unlock_object(Register lock_reg) {
|
|||||||
void InterpreterMacroAssembler::test_method_data_pointer(Register mdp,
|
void InterpreterMacroAssembler::test_method_data_pointer(Register mdp,
|
||||||
Label& zero_continue) {
|
Label& zero_continue) {
|
||||||
assert(ProfileInterpreter, "must be profiling interpreter");
|
assert(ProfileInterpreter, "must be profiling interpreter");
|
||||||
movptr(mdp, Address(rbp, frame::interpreter_frame_mdx_offset * wordSize));
|
movptr(mdp, Address(rbp, frame::interpreter_frame_mdp_offset * wordSize));
|
||||||
testptr(mdp, mdp);
|
testptr(mdp, mdp);
|
||||||
jcc(Assembler::zero, zero_continue);
|
jcc(Assembler::zero, zero_continue);
|
||||||
}
|
}
|
||||||
@ -868,7 +868,7 @@ void InterpreterMacroAssembler::set_method_data_pointer_for_bcp() {
|
|||||||
addptr(rbx, in_bytes(MethodData::data_offset()));
|
addptr(rbx, in_bytes(MethodData::data_offset()));
|
||||||
addptr(rax, rbx);
|
addptr(rax, rbx);
|
||||||
bind(set_mdp);
|
bind(set_mdp);
|
||||||
movptr(Address(rbp, frame::interpreter_frame_mdx_offset * wordSize), rax);
|
movptr(Address(rbp, frame::interpreter_frame_mdp_offset * wordSize), rax);
|
||||||
pop(rbx);
|
pop(rbx);
|
||||||
pop(rax);
|
pop(rax);
|
||||||
}
|
}
|
||||||
@ -991,7 +991,7 @@ void InterpreterMacroAssembler::update_mdp_by_offset(Register mdp_in,
|
|||||||
assert(ProfileInterpreter, "must be profiling interpreter");
|
assert(ProfileInterpreter, "must be profiling interpreter");
|
||||||
Address disp_address(mdp_in, offset_of_disp);
|
Address disp_address(mdp_in, offset_of_disp);
|
||||||
addptr(mdp_in, disp_address);
|
addptr(mdp_in, disp_address);
|
||||||
movptr(Address(rbp, frame::interpreter_frame_mdx_offset * wordSize), mdp_in);
|
movptr(Address(rbp, frame::interpreter_frame_mdp_offset * wordSize), mdp_in);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1001,7 +1001,7 @@ void InterpreterMacroAssembler::update_mdp_by_offset(Register mdp_in,
|
|||||||
assert(ProfileInterpreter, "must be profiling interpreter");
|
assert(ProfileInterpreter, "must be profiling interpreter");
|
||||||
Address disp_address(mdp_in, reg, Address::times_1, offset_of_disp);
|
Address disp_address(mdp_in, reg, Address::times_1, offset_of_disp);
|
||||||
addptr(mdp_in, disp_address);
|
addptr(mdp_in, disp_address);
|
||||||
movptr(Address(rbp, frame::interpreter_frame_mdx_offset * wordSize), mdp_in);
|
movptr(Address(rbp, frame::interpreter_frame_mdp_offset * wordSize), mdp_in);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1009,7 +1009,7 @@ void InterpreterMacroAssembler::update_mdp_by_constant(Register mdp_in,
|
|||||||
int constant) {
|
int constant) {
|
||||||
assert(ProfileInterpreter, "must be profiling interpreter");
|
assert(ProfileInterpreter, "must be profiling interpreter");
|
||||||
addptr(mdp_in, constant);
|
addptr(mdp_in, constant);
|
||||||
movptr(Address(rbp, frame::interpreter_frame_mdx_offset * wordSize), mdp_in);
|
movptr(Address(rbp, frame::interpreter_frame_mdp_offset * wordSize), mdp_in);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -58,11 +58,11 @@
|
|||||||
|
|
||||||
// Interpreter-specific registers
|
// Interpreter-specific registers
|
||||||
void save_bcp() {
|
void save_bcp() {
|
||||||
movptr(Address(rbp, frame::interpreter_frame_bcx_offset * wordSize), r13);
|
movptr(Address(rbp, frame::interpreter_frame_bcp_offset * wordSize), r13);
|
||||||
}
|
}
|
||||||
|
|
||||||
void restore_bcp() {
|
void restore_bcp() {
|
||||||
movptr(r13, Address(rbp, frame::interpreter_frame_bcx_offset * wordSize));
|
movptr(r13, Address(rbp, frame::interpreter_frame_bcp_offset * wordSize));
|
||||||
}
|
}
|
||||||
|
|
||||||
void restore_locals() {
|
void restore_locals() {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -28,6 +28,7 @@
|
|||||||
#include "interpreter/interpreter.hpp"
|
#include "interpreter/interpreter.hpp"
|
||||||
#include "interpreter/interpreterGenerator.hpp"
|
#include "interpreter/interpreterGenerator.hpp"
|
||||||
#include "interpreter/interpreterRuntime.hpp"
|
#include "interpreter/interpreterRuntime.hpp"
|
||||||
|
#include "interpreter/interp_masm.hpp"
|
||||||
#include "interpreter/templateTable.hpp"
|
#include "interpreter/templateTable.hpp"
|
||||||
#include "oops/arrayOop.hpp"
|
#include "oops/arrayOop.hpp"
|
||||||
#include "oops/methodData.hpp"
|
#include "oops/methodData.hpp"
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
#include "interpreter/interpreter.hpp"
|
#include "interpreter/interpreter.hpp"
|
||||||
#include "interpreter/interpreterGenerator.hpp"
|
#include "interpreter/interpreterGenerator.hpp"
|
||||||
#include "interpreter/interpreterRuntime.hpp"
|
#include "interpreter/interpreterRuntime.hpp"
|
||||||
|
#include "interpreter/interp_masm.hpp"
|
||||||
#include "interpreter/templateTable.hpp"
|
#include "interpreter/templateTable.hpp"
|
||||||
#include "oops/arrayOop.hpp"
|
#include "oops/arrayOop.hpp"
|
||||||
#include "oops/methodData.hpp"
|
#include "oops/methodData.hpp"
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -26,7 +26,6 @@
|
|||||||
#define CPU_X86_VM_REGISTER_X86_HPP
|
#define CPU_X86_VM_REGISTER_X86_HPP
|
||||||
|
|
||||||
#include "asm/register.hpp"
|
#include "asm/register.hpp"
|
||||||
#include "vm_version_x86.hpp"
|
|
||||||
|
|
||||||
class VMRegImpl;
|
class VMRegImpl;
|
||||||
typedef VMRegImpl* VMReg;
|
typedef VMRegImpl* VMReg;
|
||||||
@ -59,7 +58,7 @@ class RegisterImpl: public AbstractRegisterImpl {
|
|||||||
// construction
|
// construction
|
||||||
inline friend Register as_Register(int encoding);
|
inline friend Register as_Register(int encoding);
|
||||||
|
|
||||||
VMReg as_VMReg();
|
inline VMReg as_VMReg();
|
||||||
|
|
||||||
// accessors
|
// accessors
|
||||||
int encoding() const { assert(is_valid(), "invalid register"); return (intptr_t)this; }
|
int encoding() const { assert(is_valid(), "invalid register"); return (intptr_t)this; }
|
||||||
@ -110,9 +109,10 @@ class FloatRegisterImpl: public AbstractRegisterImpl {
|
|||||||
// construction
|
// construction
|
||||||
inline friend FloatRegister as_FloatRegister(int encoding);
|
inline friend FloatRegister as_FloatRegister(int encoding);
|
||||||
|
|
||||||
VMReg as_VMReg();
|
inline VMReg as_VMReg();
|
||||||
|
|
||||||
// derived registers, offsets, and addresses
|
// derived registers, offsets, and addresses
|
||||||
|
|
||||||
FloatRegister successor() const { return as_FloatRegister(encoding() + 1); }
|
FloatRegister successor() const { return as_FloatRegister(encoding() + 1); }
|
||||||
|
|
||||||
// accessors
|
// accessors
|
||||||
@ -152,7 +152,7 @@ class XMMRegisterImpl: public AbstractRegisterImpl {
|
|||||||
// construction
|
// construction
|
||||||
friend XMMRegister as_XMMRegister(int encoding);
|
friend XMMRegister as_XMMRegister(int encoding);
|
||||||
|
|
||||||
VMReg as_VMReg();
|
inline VMReg as_VMReg();
|
||||||
|
|
||||||
// derived registers, offsets, and addresses
|
// derived registers, offsets, and addresses
|
||||||
XMMRegister successor() const { return as_XMMRegister(encoding() + 1); }
|
XMMRegister successor() const { return as_XMMRegister(encoding() + 1); }
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -28,6 +28,7 @@
|
|||||||
#include "interpreter/interpreter.hpp"
|
#include "interpreter/interpreter.hpp"
|
||||||
#include "interpreter/interpreterGenerator.hpp"
|
#include "interpreter/interpreterGenerator.hpp"
|
||||||
#include "interpreter/interpreterRuntime.hpp"
|
#include "interpreter/interpreterRuntime.hpp"
|
||||||
|
#include "interpreter/interp_masm.hpp"
|
||||||
#include "interpreter/templateTable.hpp"
|
#include "interpreter/templateTable.hpp"
|
||||||
#include "oops/arrayOop.hpp"
|
#include "oops/arrayOop.hpp"
|
||||||
#include "oops/methodData.hpp"
|
#include "oops/methodData.hpp"
|
||||||
@ -51,7 +52,7 @@
|
|||||||
|
|
||||||
#ifndef CC_INTERP
|
#ifndef CC_INTERP
|
||||||
const int method_offset = frame::interpreter_frame_method_offset * wordSize;
|
const int method_offset = frame::interpreter_frame_method_offset * wordSize;
|
||||||
const int bci_offset = frame::interpreter_frame_bcx_offset * wordSize;
|
const int bcp_offset = frame::interpreter_frame_bcp_offset * wordSize;
|
||||||
const int locals_offset = frame::interpreter_frame_locals_offset * wordSize;
|
const int locals_offset = frame::interpreter_frame_locals_offset * wordSize;
|
||||||
|
|
||||||
//------------------------------------------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -28,6 +28,7 @@
|
|||||||
#include "interpreter/interpreter.hpp"
|
#include "interpreter/interpreter.hpp"
|
||||||
#include "interpreter/interpreterGenerator.hpp"
|
#include "interpreter/interpreterGenerator.hpp"
|
||||||
#include "interpreter/interpreterRuntime.hpp"
|
#include "interpreter/interpreterRuntime.hpp"
|
||||||
|
#include "interpreter/interp_masm.hpp"
|
||||||
#include "interpreter/templateTable.hpp"
|
#include "interpreter/templateTable.hpp"
|
||||||
#include "oops/arrayOop.hpp"
|
#include "oops/arrayOop.hpp"
|
||||||
#include "oops/methodData.hpp"
|
#include "oops/methodData.hpp"
|
||||||
@ -51,7 +52,7 @@
|
|||||||
#ifndef CC_INTERP
|
#ifndef CC_INTERP
|
||||||
|
|
||||||
const int method_offset = frame::interpreter_frame_method_offset * wordSize;
|
const int method_offset = frame::interpreter_frame_method_offset * wordSize;
|
||||||
const int bci_offset = frame::interpreter_frame_bcx_offset * wordSize;
|
const int bcp_offset = frame::interpreter_frame_bcp_offset * wordSize;
|
||||||
const int locals_offset = frame::interpreter_frame_locals_offset * wordSize;
|
const int locals_offset = frame::interpreter_frame_locals_offset * wordSize;
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -26,6 +26,7 @@
|
|||||||
#include "asm/macroAssembler.hpp"
|
#include "asm/macroAssembler.hpp"
|
||||||
#include "interpreter/interpreter.hpp"
|
#include "interpreter/interpreter.hpp"
|
||||||
#include "interpreter/interpreterRuntime.hpp"
|
#include "interpreter/interpreterRuntime.hpp"
|
||||||
|
#include "interpreter/interp_masm.hpp"
|
||||||
#include "interpreter/templateTable.hpp"
|
#include "interpreter/templateTable.hpp"
|
||||||
#include "memory/universe.inline.hpp"
|
#include "memory/universe.inline.hpp"
|
||||||
#include "oops/methodData.hpp"
|
#include "oops/methodData.hpp"
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -26,6 +26,7 @@
|
|||||||
#include "asm/macroAssembler.hpp"
|
#include "asm/macroAssembler.hpp"
|
||||||
#include "interpreter/interpreter.hpp"
|
#include "interpreter/interpreter.hpp"
|
||||||
#include "interpreter/interpreterRuntime.hpp"
|
#include "interpreter/interpreterRuntime.hpp"
|
||||||
|
#include "interpreter/interp_masm.hpp"
|
||||||
#include "interpreter/templateTable.hpp"
|
#include "interpreter/templateTable.hpp"
|
||||||
#include "memory/universe.inline.hpp"
|
#include "memory/universe.inline.hpp"
|
||||||
#include "oops/methodData.hpp"
|
#include "oops/methodData.hpp"
|
||||||
|
@ -25,13 +25,49 @@
|
|||||||
#ifndef CPU_X86_VM_VMREG_X86_HPP
|
#ifndef CPU_X86_VM_VMREG_X86_HPP
|
||||||
#define CPU_X86_VM_VMREG_X86_HPP
|
#define CPU_X86_VM_VMREG_X86_HPP
|
||||||
|
|
||||||
bool is_Register();
|
|
||||||
Register as_Register();
|
|
||||||
|
|
||||||
bool is_FloatRegister();
|
|
||||||
FloatRegister as_FloatRegister();
|
|
||||||
|
|
||||||
bool is_XMMRegister();
|
inline bool is_Register() {
|
||||||
XMMRegister as_XMMRegister();
|
return (unsigned int) value() < (unsigned int) ConcreteRegisterImpl::max_gpr;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool is_FloatRegister() {
|
||||||
|
return value() >= ConcreteRegisterImpl::max_gpr && value() < ConcreteRegisterImpl::max_fpr;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool is_XMMRegister() {
|
||||||
|
return value() >= ConcreteRegisterImpl::max_fpr && value() < ConcreteRegisterImpl::max_xmm;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline Register as_Register() {
|
||||||
|
|
||||||
|
assert( is_Register(), "must be");
|
||||||
|
// Yuk
|
||||||
|
#ifdef AMD64
|
||||||
|
return ::as_Register(value() >> 1);
|
||||||
|
#else
|
||||||
|
return ::as_Register(value());
|
||||||
|
#endif // AMD64
|
||||||
|
}
|
||||||
|
|
||||||
|
inline FloatRegister as_FloatRegister() {
|
||||||
|
assert( is_FloatRegister() && is_even(value()), "must be" );
|
||||||
|
// Yuk
|
||||||
|
return ::as_FloatRegister((value() - ConcreteRegisterImpl::max_gpr) >> 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline XMMRegister as_XMMRegister() {
|
||||||
|
assert( is_XMMRegister() && is_even(value()), "must be" );
|
||||||
|
// Yuk
|
||||||
|
return ::as_XMMRegister((value() - ConcreteRegisterImpl::max_fpr) >> 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool is_concrete() {
|
||||||
|
assert(is_reg(), "must be");
|
||||||
|
#ifndef AMD64
|
||||||
|
if (is_Register()) return true;
|
||||||
|
#endif // AMD64
|
||||||
|
return is_even(value());
|
||||||
|
}
|
||||||
|
|
||||||
#endif // CPU_X86_VM_VMREG_X86_HPP
|
#endif // CPU_X86_VM_VMREG_X86_HPP
|
||||||
|
@ -42,48 +42,4 @@ inline VMReg XMMRegisterImpl::as_VMReg() {
|
|||||||
return VMRegImpl::as_VMReg((encoding() << 3) + ConcreteRegisterImpl::max_fpr);
|
return VMRegImpl::as_VMReg((encoding() << 3) + ConcreteRegisterImpl::max_fpr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
inline bool VMRegImpl::is_Register() {
|
|
||||||
return (unsigned int) value() < (unsigned int) ConcreteRegisterImpl::max_gpr;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool VMRegImpl::is_FloatRegister() {
|
|
||||||
return value() >= ConcreteRegisterImpl::max_gpr && value() < ConcreteRegisterImpl::max_fpr;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool VMRegImpl::is_XMMRegister() {
|
|
||||||
return value() >= ConcreteRegisterImpl::max_fpr && value() < ConcreteRegisterImpl::max_xmm;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline Register VMRegImpl::as_Register() {
|
|
||||||
|
|
||||||
assert( is_Register(), "must be");
|
|
||||||
// Yuk
|
|
||||||
#ifdef AMD64
|
|
||||||
return ::as_Register(value() >> 1);
|
|
||||||
#else
|
|
||||||
return ::as_Register(value());
|
|
||||||
#endif // AMD64
|
|
||||||
}
|
|
||||||
|
|
||||||
inline FloatRegister VMRegImpl::as_FloatRegister() {
|
|
||||||
assert( is_FloatRegister() && is_even(value()), "must be" );
|
|
||||||
// Yuk
|
|
||||||
return ::as_FloatRegister((value() - ConcreteRegisterImpl::max_gpr) >> 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline XMMRegister VMRegImpl::as_XMMRegister() {
|
|
||||||
assert( is_XMMRegister() && is_even(value()), "must be" );
|
|
||||||
// Yuk
|
|
||||||
return ::as_XMMRegister((value() - ConcreteRegisterImpl::max_fpr) >> 3);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool VMRegImpl::is_concrete() {
|
|
||||||
assert(is_reg(), "must be");
|
|
||||||
#ifndef AMD64
|
|
||||||
if (is_Register()) return true;
|
|
||||||
#endif // AMD64
|
|
||||||
return is_even(value());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // CPU_X86_VM_VMREG_X86_INLINE_HPP
|
#endif // CPU_X86_VM_VMREG_X86_INLINE_HPP
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
|
// Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
//
|
//
|
||||||
// This code is free software; you can redistribute it and/or modify it
|
// This code is free software; you can redistribute it and/or modify it
|
||||||
@ -487,6 +487,8 @@ source_hpp %{
|
|||||||
// To keep related declarations/definitions/uses close together,
|
// To keep related declarations/definitions/uses close together,
|
||||||
// we switch between source %{ }% and source_hpp %{ }% freely as needed.
|
// we switch between source %{ }% and source_hpp %{ }% freely as needed.
|
||||||
|
|
||||||
|
class NativeJump;
|
||||||
|
|
||||||
class CallStubImpl {
|
class CallStubImpl {
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* Copyright 2007, 2008, 2009, 2010, 2011 Red Hat, Inc.
|
* Copyright 2007, 2008, 2009, 2010, 2011 Red Hat, Inc.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
@ -119,9 +119,6 @@ bool frame::safe_for_sender(JavaThread *thread) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void frame::pd_gc_epilog() {
|
|
||||||
}
|
|
||||||
|
|
||||||
bool frame::is_interpreted_frame_valid(JavaThread *thread) const {
|
bool frame::is_interpreted_frame_valid(JavaThread *thread) const {
|
||||||
ShouldNotCallThis();
|
ShouldNotCallThis();
|
||||||
return false;
|
return false;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
|
* Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
@ -101,7 +101,7 @@ inline intptr_t** frame::interpreter_frame_locals_addr() const {
|
|||||||
return &(get_interpreterState()->_locals);
|
return &(get_interpreterState()->_locals);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline intptr_t* frame::interpreter_frame_bcx_addr() const {
|
inline intptr_t* frame::interpreter_frame_bcp_addr() const {
|
||||||
return (intptr_t*) &(get_interpreterState()->_bcp);
|
return (intptr_t*) &(get_interpreterState()->_bcp);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -113,7 +113,7 @@ inline Method** frame::interpreter_frame_method_addr() const {
|
|||||||
return &(get_interpreterState()->_method);
|
return &(get_interpreterState()->_method);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline intptr_t* frame::interpreter_frame_mdx_addr() const {
|
inline intptr_t* frame::interpreter_frame_mdp_addr() const {
|
||||||
return (intptr_t*) &(get_interpreterState()->_mdx);
|
return (intptr_t*) &(get_interpreterState()->_mdx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,6 +66,7 @@
|
|||||||
#include "runtime/thread.inline.hpp"
|
#include "runtime/thread.inline.hpp"
|
||||||
#include "runtime/threadCritical.hpp"
|
#include "runtime/threadCritical.hpp"
|
||||||
#include "runtime/timer.hpp"
|
#include "runtime/timer.hpp"
|
||||||
|
#include "runtime/vm_version.hpp"
|
||||||
#include "services/attachListener.hpp"
|
#include "services/attachListener.hpp"
|
||||||
#include "services/runtimeService.hpp"
|
#include "services/runtimeService.hpp"
|
||||||
#include "utilities/decoder.hpp"
|
#include "utilities/decoder.hpp"
|
||||||
@ -1213,10 +1214,6 @@ void os::die() {
|
|||||||
::abort();
|
::abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Unused on Aix for now.
|
|
||||||
void os::set_error_file(const char *logfile) {}
|
|
||||||
|
|
||||||
|
|
||||||
// This method is a copy of JDK's sysGetLastErrorString
|
// This method is a copy of JDK's sysGetLastErrorString
|
||||||
// from src/solaris/hpi/src/system_md.c
|
// from src/solaris/hpi/src/system_md.c
|
||||||
|
|
||||||
|
@ -36,9 +36,6 @@
|
|||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
#include <netdb.h>
|
#include <netdb.h>
|
||||||
|
|
||||||
// Defined in the system headers included above.
|
|
||||||
#undef rem_size
|
|
||||||
|
|
||||||
inline void* os::thread_local_storage_at(int index) {
|
inline void* os::thread_local_storage_at(int index) {
|
||||||
return pthread_getspecific((pthread_key_t)index);
|
return pthread_getspecific((pthread_key_t)index);
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -202,11 +202,11 @@ int generateJvmOffsets(GEN_variant gen_variant) {
|
|||||||
GEN_VALUE(OFFSET_interpreter_frame_method, 2 * pointer_size); /* L2 in saved window */
|
GEN_VALUE(OFFSET_interpreter_frame_method, 2 * pointer_size); /* L2 in saved window */
|
||||||
GEN_VALUE(OFFSET_interpreter_frame_sender_sp, 13 * pointer_size); /* I5 in saved window */
|
GEN_VALUE(OFFSET_interpreter_frame_sender_sp, 13 * pointer_size); /* I5 in saved window */
|
||||||
// Fake value for consistency. It is not going to be used.
|
// Fake value for consistency. It is not going to be used.
|
||||||
GEN_VALUE(OFFSET_interpreter_frame_bcx_offset, 0xFFFF);
|
GEN_VALUE(OFFSET_interpreter_frame_bcp_offset, 0xFFFF);
|
||||||
#elif defined(i386) || defined(__i386) || defined(__amd64)
|
#elif defined(i386) || defined(__i386) || defined(__amd64)
|
||||||
GEN_VALUE(OFFSET_interpreter_frame_sender_sp, -1 * pointer_size);
|
GEN_VALUE(OFFSET_interpreter_frame_sender_sp, -1 * pointer_size);
|
||||||
GEN_VALUE(OFFSET_interpreter_frame_method, -3 * pointer_size);
|
GEN_VALUE(OFFSET_interpreter_frame_method, -3 * pointer_size);
|
||||||
GEN_VALUE(OFFSET_interpreter_frame_bcx_offset, -7 * pointer_size);
|
GEN_VALUE(OFFSET_interpreter_frame_bcp_offset, -7 * pointer_size);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
GEN_OFFS(Klass, _name);
|
GEN_OFFS(Klass, _name);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -164,7 +164,7 @@ struct jvm_agent {
|
|||||||
int32_t SIZE_CodeCache_log2_segment;
|
int32_t SIZE_CodeCache_log2_segment;
|
||||||
|
|
||||||
uint64_t methodPtr;
|
uint64_t methodPtr;
|
||||||
uint64_t bcx;
|
uint64_t bcp;
|
||||||
|
|
||||||
Nmethod_t *N; /*Inlined methods support */
|
Nmethod_t *N; /*Inlined methods support */
|
||||||
Frame_t prev_fr;
|
Frame_t prev_fr;
|
||||||
@ -260,6 +260,9 @@ static int parse_vmstructs(jvm_agent_t* J) {
|
|||||||
uint64_t base;
|
uint64_t base;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
|
/* Clear *vmp now in case we jump to fail: */
|
||||||
|
memset(vmp, 0, sizeof(VMStructEntry));
|
||||||
|
|
||||||
err = ps_pglobal_lookup(J->P, LIBJVM_SO, "gHotSpotVMStructs", &sym_addr);
|
err = ps_pglobal_lookup(J->P, LIBJVM_SO, "gHotSpotVMStructs", &sym_addr);
|
||||||
CHECK_FAIL(err);
|
CHECK_FAIL(err);
|
||||||
err = read_pointer(J, sym_addr, &gHotSpotVMStructs);
|
err = read_pointer(J, sym_addr, &gHotSpotVMStructs);
|
||||||
@ -1068,19 +1071,9 @@ name_for_nmethod(jvm_agent_t* J,
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
int is_bci(intptr_t bcx) {
|
|
||||||
switch (DATA_MODEL) {
|
|
||||||
case PR_MODEL_LP64:
|
|
||||||
return ((uintptr_t) bcx) <= ((uintptr_t) MAX_METHOD_CODE_SIZE) ;
|
|
||||||
case PR_MODEL_ILP32:
|
|
||||||
default:
|
|
||||||
return 0 <= bcx && bcx <= MAX_METHOD_CODE_SIZE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
name_for_imethod(jvm_agent_t* J,
|
name_for_imethod(jvm_agent_t* J,
|
||||||
uint64_t bcx,
|
uint64_t bcp,
|
||||||
uint64_t method,
|
uint64_t method,
|
||||||
char *result,
|
char *result,
|
||||||
size_t size,
|
size_t size,
|
||||||
@ -1095,7 +1088,7 @@ name_for_imethod(jvm_agent_t* J,
|
|||||||
err = read_pointer(J, method + OFFSET_Method_constMethod, &constMethod);
|
err = read_pointer(J, method + OFFSET_Method_constMethod, &constMethod);
|
||||||
CHECK_FAIL(err);
|
CHECK_FAIL(err);
|
||||||
|
|
||||||
bci = is_bci(bcx) ? bcx : bcx - (constMethod + (uint64_t) SIZE_ConstMethod);
|
bci = bcp - (constMethod + (uint64_t) SIZE_ConstMethod);
|
||||||
|
|
||||||
if (debug)
|
if (debug)
|
||||||
fprintf(stderr, "\t name_for_imethod: BEGIN: method: %#llx\n", method);
|
fprintf(stderr, "\t name_for_imethod: BEGIN: method: %#llx\n", method);
|
||||||
@ -1169,7 +1162,7 @@ name_for_codecache(jvm_agent_t* J, uint64_t fp, uint64_t pc, char * result,
|
|||||||
if (err == PS_OK && strncmp(name, "Interpreter", 11) == 0) {
|
if (err == PS_OK && strncmp(name, "Interpreter", 11) == 0) {
|
||||||
*is_interpreted = 1;
|
*is_interpreted = 1;
|
||||||
if (is_method(J, J->methodPtr)) {
|
if (is_method(J, J->methodPtr)) {
|
||||||
return name_for_imethod(J, J->bcx, J->methodPtr, result, size, jframe);
|
return name_for_imethod(J, J->bcp, J->methodPtr, result, size, jframe);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1326,7 +1319,7 @@ int Jlookup_by_regs(jvm_agent_t* J, const prgregset_t regs, char *name,
|
|||||||
/* arguments given to read_pointer need to be worst case sized */
|
/* arguments given to read_pointer need to be worst case sized */
|
||||||
uint64_t methodPtr = 0;
|
uint64_t methodPtr = 0;
|
||||||
uint64_t sender_sp;
|
uint64_t sender_sp;
|
||||||
uint64_t bcx = 0;
|
uint64_t bcp = 0;
|
||||||
int is_interpreted = 0;
|
int is_interpreted = 0;
|
||||||
int result = PS_OK;
|
int result = PS_OK;
|
||||||
int err = PS_OK;
|
int err = PS_OK;
|
||||||
@ -1357,7 +1350,7 @@ int Jlookup_by_regs(jvm_agent_t* J, const prgregset_t regs, char *name,
|
|||||||
* regs[R_PC] contains a CALL instruction pc offset.
|
* regs[R_PC] contains a CALL instruction pc offset.
|
||||||
*/
|
*/
|
||||||
pc += 8;
|
pc += 8;
|
||||||
bcx = (uintptr_t) regs[R_L1];
|
bcp = (uintptr_t) regs[R_L1];
|
||||||
methodPtr = (uintptr_t) regs[R_L2];
|
methodPtr = (uintptr_t) regs[R_L2];
|
||||||
sender_sp = regs[R_I5];
|
sender_sp = regs[R_I5];
|
||||||
if (debug > 2) {
|
if (debug > 2) {
|
||||||
@ -1385,13 +1378,13 @@ int Jlookup_by_regs(jvm_agent_t* J, const prgregset_t regs, char *name,
|
|||||||
if (read_pointer(J, fp + OFFSET_interpreter_frame_sender_sp, &sender_sp) != PS_OK) {
|
if (read_pointer(J, fp + OFFSET_interpreter_frame_sender_sp, &sender_sp) != PS_OK) {
|
||||||
sender_sp = 0;
|
sender_sp = 0;
|
||||||
}
|
}
|
||||||
if (read_pointer(J, fp + OFFSET_interpreter_frame_bcx_offset, &bcx) != PS_OK) {
|
if (read_pointer(J, fp + OFFSET_interpreter_frame_bcp_offset, &bcp) != PS_OK) {
|
||||||
bcx = 0;
|
bcp = 0;
|
||||||
}
|
}
|
||||||
#endif /* i386 */
|
#endif /* i386 */
|
||||||
|
|
||||||
J->methodPtr = methodPtr;
|
J->methodPtr = methodPtr;
|
||||||
J->bcx = bcx;
|
J->bcp = bcp;
|
||||||
|
|
||||||
/* On x86 with C2 JVM: native frame may have wrong regs[R_FP]
|
/* On x86 with C2 JVM: native frame may have wrong regs[R_FP]
|
||||||
* For example: JVM_SuspendThread frame poins to the top interpreted frame.
|
* For example: JVM_SuspendThread frame poins to the top interpreted frame.
|
||||||
@ -1402,7 +1395,7 @@ int Jlookup_by_regs(jvm_agent_t* J, const prgregset_t regs, char *name,
|
|||||||
*/
|
*/
|
||||||
#ifndef X86_COMPILER2
|
#ifndef X86_COMPILER2
|
||||||
if (is_method(J, J->methodPtr)) {
|
if (is_method(J, J->methodPtr)) {
|
||||||
result = name_for_imethod(J, bcx, J->methodPtr, name, size, jframe);
|
result = name_for_imethod(J, bcp, J->methodPtr, name, size, jframe);
|
||||||
/* If the methodPtr is a method then this is highly likely to be
|
/* If the methodPtr is a method then this is highly likely to be
|
||||||
an interpreter frame */
|
an interpreter frame */
|
||||||
if (result >= 0) {
|
if (result >= 0) {
|
||||||
@ -1416,7 +1409,7 @@ int Jlookup_by_regs(jvm_agent_t* J, const prgregset_t regs, char *name,
|
|||||||
}
|
}
|
||||||
#ifdef X86_COMPILER2
|
#ifdef X86_COMPILER2
|
||||||
else if (is_method(J, J->methodPtr)) {
|
else if (is_method(J, J->methodPtr)) {
|
||||||
result = name_for_imethod(J, bcx, J->methodPtr, name, size, jframe);
|
result = name_for_imethod(J, bcp, J->methodPtr, name, size, jframe);
|
||||||
/* If the methodPtr is a method then this is highly likely to be
|
/* If the methodPtr is a method then this is highly likely to be
|
||||||
an interpreter frame */
|
an interpreter frame */
|
||||||
if (result >= 0) {
|
if (result >= 0) {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -197,11 +197,11 @@ int generateJvmOffsets(GEN_variant gen_variant) {
|
|||||||
GEN_VALUE(OFFSET_interpreter_frame_method, 2 * pointer_size); /* L2 in saved window */
|
GEN_VALUE(OFFSET_interpreter_frame_method, 2 * pointer_size); /* L2 in saved window */
|
||||||
GEN_VALUE(OFFSET_interpreter_frame_sender_sp, 13 * pointer_size); /* I5 in saved window */
|
GEN_VALUE(OFFSET_interpreter_frame_sender_sp, 13 * pointer_size); /* I5 in saved window */
|
||||||
// Fake value for consistency. It is not going to be used.
|
// Fake value for consistency. It is not going to be used.
|
||||||
GEN_VALUE(OFFSET_interpreter_frame_bcx_offset, 0xFFFF);
|
GEN_VALUE(OFFSET_interpreter_frame_bcp_offset, 0xFFFF);
|
||||||
#elif defined(i386) || defined(__i386) || defined(__amd64)
|
#elif defined(i386) || defined(__i386) || defined(__amd64)
|
||||||
GEN_VALUE(OFFSET_interpreter_frame_sender_sp, -1 * pointer_size);
|
GEN_VALUE(OFFSET_interpreter_frame_sender_sp, -1 * pointer_size);
|
||||||
GEN_VALUE(OFFSET_interpreter_frame_method, -3 * pointer_size);
|
GEN_VALUE(OFFSET_interpreter_frame_method, -3 * pointer_size);
|
||||||
GEN_VALUE(OFFSET_interpreter_frame_bcx_offset, -7 * pointer_size);
|
GEN_VALUE(OFFSET_interpreter_frame_bcp_offset, -7 * pointer_size);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
GEN_OFFS(Klass, _name);
|
GEN_OFFS(Klass, _name);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -164,7 +164,7 @@ struct jvm_agent {
|
|||||||
int32_t SIZE_CodeCache_log2_segment;
|
int32_t SIZE_CodeCache_log2_segment;
|
||||||
|
|
||||||
uint64_t methodPtr;
|
uint64_t methodPtr;
|
||||||
uint64_t bcx;
|
uint64_t bcp;
|
||||||
|
|
||||||
Nmethod_t *N; /*Inlined methods support */
|
Nmethod_t *N; /*Inlined methods support */
|
||||||
Frame_t prev_fr;
|
Frame_t prev_fr;
|
||||||
@ -260,6 +260,9 @@ static int parse_vmstructs(jvm_agent_t* J) {
|
|||||||
uint64_t base;
|
uint64_t base;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
|
/* Clear *vmp now in case we jump to fail: */
|
||||||
|
memset(vmp, 0, sizeof(VMStructEntry));
|
||||||
|
|
||||||
err = ps_pglobal_lookup(J->P, LIBJVM_SO, "gHotSpotVMStructs", &sym_addr);
|
err = ps_pglobal_lookup(J->P, LIBJVM_SO, "gHotSpotVMStructs", &sym_addr);
|
||||||
CHECK_FAIL(err);
|
CHECK_FAIL(err);
|
||||||
err = read_pointer(J, sym_addr, &gHotSpotVMStructs);
|
err = read_pointer(J, sym_addr, &gHotSpotVMStructs);
|
||||||
@ -1068,19 +1071,9 @@ name_for_nmethod(jvm_agent_t* J,
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
int is_bci(intptr_t bcx) {
|
|
||||||
switch (DATA_MODEL) {
|
|
||||||
case PR_MODEL_LP64:
|
|
||||||
return ((uintptr_t) bcx) <= ((uintptr_t) MAX_METHOD_CODE_SIZE) ;
|
|
||||||
case PR_MODEL_ILP32:
|
|
||||||
default:
|
|
||||||
return 0 <= bcx && bcx <= MAX_METHOD_CODE_SIZE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
name_for_imethod(jvm_agent_t* J,
|
name_for_imethod(jvm_agent_t* J,
|
||||||
uint64_t bcx,
|
uint64_t bcp,
|
||||||
uint64_t method,
|
uint64_t method,
|
||||||
char *result,
|
char *result,
|
||||||
size_t size,
|
size_t size,
|
||||||
@ -1095,7 +1088,7 @@ name_for_imethod(jvm_agent_t* J,
|
|||||||
err = read_pointer(J, method + OFFSET_Method_constMethod, &constMethod);
|
err = read_pointer(J, method + OFFSET_Method_constMethod, &constMethod);
|
||||||
CHECK_FAIL(err);
|
CHECK_FAIL(err);
|
||||||
|
|
||||||
bci = is_bci(bcx) ? bcx : bcx - (constMethod + (uint64_t) SIZE_ConstMethod);
|
bci = bcp - (constMethod + (uint64_t) SIZE_ConstMethod);
|
||||||
|
|
||||||
if (debug)
|
if (debug)
|
||||||
fprintf(stderr, "\t name_for_imethod: BEGIN: method: %#llx\n", method);
|
fprintf(stderr, "\t name_for_imethod: BEGIN: method: %#llx\n", method);
|
||||||
@ -1169,7 +1162,7 @@ name_for_codecache(jvm_agent_t* J, uint64_t fp, uint64_t pc, char * result,
|
|||||||
if (err == PS_OK && strncmp(name, "Interpreter", 11) == 0) {
|
if (err == PS_OK && strncmp(name, "Interpreter", 11) == 0) {
|
||||||
*is_interpreted = 1;
|
*is_interpreted = 1;
|
||||||
if (is_method(J, J->methodPtr)) {
|
if (is_method(J, J->methodPtr)) {
|
||||||
return name_for_imethod(J, J->bcx, J->methodPtr, result, size, jframe);
|
return name_for_imethod(J, J->bcp, J->methodPtr, result, size, jframe);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1326,7 +1319,7 @@ int Jlookup_by_regs(jvm_agent_t* J, const prgregset_t regs, char *name,
|
|||||||
/* arguments given to read_pointer need to be worst case sized */
|
/* arguments given to read_pointer need to be worst case sized */
|
||||||
uint64_t methodPtr = 0;
|
uint64_t methodPtr = 0;
|
||||||
uint64_t sender_sp;
|
uint64_t sender_sp;
|
||||||
uint64_t bcx = 0;
|
uint64_t bcp = 0;
|
||||||
int is_interpreted = 0;
|
int is_interpreted = 0;
|
||||||
int result = PS_OK;
|
int result = PS_OK;
|
||||||
int err = PS_OK;
|
int err = PS_OK;
|
||||||
@ -1357,7 +1350,7 @@ int Jlookup_by_regs(jvm_agent_t* J, const prgregset_t regs, char *name,
|
|||||||
* regs[R_PC] contains a CALL instruction pc offset.
|
* regs[R_PC] contains a CALL instruction pc offset.
|
||||||
*/
|
*/
|
||||||
pc += 8;
|
pc += 8;
|
||||||
bcx = (uintptr_t) regs[R_L1];
|
bcp = (uintptr_t) regs[R_L1];
|
||||||
methodPtr = (uintptr_t) regs[R_L2];
|
methodPtr = (uintptr_t) regs[R_L2];
|
||||||
sender_sp = regs[R_I5];
|
sender_sp = regs[R_I5];
|
||||||
if (debug > 2) {
|
if (debug > 2) {
|
||||||
@ -1385,13 +1378,13 @@ int Jlookup_by_regs(jvm_agent_t* J, const prgregset_t regs, char *name,
|
|||||||
if (read_pointer(J, fp + OFFSET_interpreter_frame_sender_sp, &sender_sp) != PS_OK) {
|
if (read_pointer(J, fp + OFFSET_interpreter_frame_sender_sp, &sender_sp) != PS_OK) {
|
||||||
sender_sp = 0;
|
sender_sp = 0;
|
||||||
}
|
}
|
||||||
if (read_pointer(J, fp + OFFSET_interpreter_frame_bcx_offset, &bcx) != PS_OK) {
|
if (read_pointer(J, fp + OFFSET_interpreter_frame_bcp_offset, &bcp) != PS_OK) {
|
||||||
bcx = 0;
|
bcp = 0;
|
||||||
}
|
}
|
||||||
#endif /* i386 */
|
#endif /* i386 */
|
||||||
|
|
||||||
J->methodPtr = methodPtr;
|
J->methodPtr = methodPtr;
|
||||||
J->bcx = bcx;
|
J->bcp = bcp;
|
||||||
|
|
||||||
/* On x86 with C2 JVM: native frame may have wrong regs[R_FP]
|
/* On x86 with C2 JVM: native frame may have wrong regs[R_FP]
|
||||||
* For example: JVM_SuspendThread frame poins to the top interpreted frame.
|
* For example: JVM_SuspendThread frame poins to the top interpreted frame.
|
||||||
@ -1402,7 +1395,7 @@ int Jlookup_by_regs(jvm_agent_t* J, const prgregset_t regs, char *name,
|
|||||||
*/
|
*/
|
||||||
#ifndef X86_COMPILER2
|
#ifndef X86_COMPILER2
|
||||||
if (is_method(J, J->methodPtr)) {
|
if (is_method(J, J->methodPtr)) {
|
||||||
result = name_for_imethod(J, bcx, J->methodPtr, name, size, jframe);
|
result = name_for_imethod(J, bcp, J->methodPtr, name, size, jframe);
|
||||||
/* If the methodPtr is a method then this is highly likely to be
|
/* If the methodPtr is a method then this is highly likely to be
|
||||||
an interpreter frame */
|
an interpreter frame */
|
||||||
if (result >= 0) {
|
if (result >= 0) {
|
||||||
@ -1416,7 +1409,7 @@ int Jlookup_by_regs(jvm_agent_t* J, const prgregset_t regs, char *name,
|
|||||||
}
|
}
|
||||||
#ifdef X86_COMPILER2
|
#ifdef X86_COMPILER2
|
||||||
else if (is_method(J, J->methodPtr)) {
|
else if (is_method(J, J->methodPtr)) {
|
||||||
result = name_for_imethod(J, bcx, J->methodPtr, name, size, jframe);
|
result = name_for_imethod(J, bcp, J->methodPtr, name, size, jframe);
|
||||||
/* If the methodPtr is a method then this is highly likely to be
|
/* If the methodPtr is a method then this is highly likely to be
|
||||||
an interpreter frame */
|
an interpreter frame */
|
||||||
if (result >= 0) {
|
if (result >= 0) {
|
||||||
|
@ -59,6 +59,7 @@
|
|||||||
#include "runtime/thread.inline.hpp"
|
#include "runtime/thread.inline.hpp"
|
||||||
#include "runtime/threadCritical.hpp"
|
#include "runtime/threadCritical.hpp"
|
||||||
#include "runtime/timer.hpp"
|
#include "runtime/timer.hpp"
|
||||||
|
#include "runtime/vm_version.hpp"
|
||||||
#include "services/attachListener.hpp"
|
#include "services/attachListener.hpp"
|
||||||
#include "services/memTracker.hpp"
|
#include "services/memTracker.hpp"
|
||||||
#include "services/runtimeService.hpp"
|
#include "services/runtimeService.hpp"
|
||||||
|
@ -62,6 +62,7 @@
|
|||||||
#include "runtime/thread.inline.hpp"
|
#include "runtime/thread.inline.hpp"
|
||||||
#include "runtime/threadCritical.hpp"
|
#include "runtime/threadCritical.hpp"
|
||||||
#include "runtime/timer.hpp"
|
#include "runtime/timer.hpp"
|
||||||
|
#include "runtime/vm_version.hpp"
|
||||||
#include "services/attachListener.hpp"
|
#include "services/attachListener.hpp"
|
||||||
#include "services/memTracker.hpp"
|
#include "services/memTracker.hpp"
|
||||||
#include "services/runtimeService.hpp"
|
#include "services/runtimeService.hpp"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* Copyright 2012, 2013 SAP AG. All rights reserved.
|
* Copyright (c) 2012, 2014, SAP AG. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -28,7 +28,6 @@
|
|||||||
|
|
||||||
#include "runtime/atomic.hpp"
|
#include "runtime/atomic.hpp"
|
||||||
#include "runtime/os.hpp"
|
#include "runtime/os.hpp"
|
||||||
#include "vm_version_ppc.hpp"
|
|
||||||
|
|
||||||
#ifndef _LP64
|
#ifndef _LP64
|
||||||
#error "Atomic currently only impleneted for PPC64"
|
#error "Atomic currently only impleneted for PPC64"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* Copyright 2012, 2013 SAP AG. All rights reserved.
|
* Copyright (c) 2012, 2014, SAP AG. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -27,7 +27,6 @@
|
|||||||
#define OS_CPU_AIX_OJDKPPC_VM_ORDERACCESS_AIX_PPC_INLINE_HPP
|
#define OS_CPU_AIX_OJDKPPC_VM_ORDERACCESS_AIX_PPC_INLINE_HPP
|
||||||
|
|
||||||
#include "runtime/orderAccess.hpp"
|
#include "runtime/orderAccess.hpp"
|
||||||
#include "vm_version_ppc.hpp"
|
|
||||||
|
|
||||||
// Implementation of class OrderAccess.
|
// Implementation of class OrderAccess.
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -27,7 +27,6 @@
|
|||||||
|
|
||||||
#include "runtime/atomic.hpp"
|
#include "runtime/atomic.hpp"
|
||||||
#include "runtime/os.hpp"
|
#include "runtime/os.hpp"
|
||||||
#include "vm_version_x86.hpp"
|
|
||||||
|
|
||||||
// Implementation of class atomic
|
// Implementation of class atomic
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -28,7 +28,6 @@
|
|||||||
#include "runtime/atomic.inline.hpp"
|
#include "runtime/atomic.inline.hpp"
|
||||||
#include "runtime/orderAccess.hpp"
|
#include "runtime/orderAccess.hpp"
|
||||||
#include "runtime/os.hpp"
|
#include "runtime/os.hpp"
|
||||||
#include "vm_version_x86.hpp"
|
|
||||||
|
|
||||||
// Implementation of class OrderAccess.
|
// Implementation of class OrderAccess.
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* Copyright 2007, 2008, 2011 Red Hat, Inc.
|
* Copyright 2007, 2008, 2011 Red Hat, Inc.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
@ -28,7 +28,6 @@
|
|||||||
|
|
||||||
#include "runtime/atomic.hpp"
|
#include "runtime/atomic.hpp"
|
||||||
#include "runtime/os.hpp"
|
#include "runtime/os.hpp"
|
||||||
#include "vm_version_zero.hpp"
|
|
||||||
|
|
||||||
// Implementation of class atomic
|
// Implementation of class atomic
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* Copyright 2007, 2008, 2009 Red Hat, Inc.
|
* Copyright 2007, 2008, 2009 Red Hat, Inc.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
@ -27,7 +27,6 @@
|
|||||||
#define OS_CPU_BSD_ZERO_VM_ORDERACCESS_BSD_ZERO_INLINE_HPP
|
#define OS_CPU_BSD_ZERO_VM_ORDERACCESS_BSD_ZERO_INLINE_HPP
|
||||||
|
|
||||||
#include "runtime/orderAccess.hpp"
|
#include "runtime/orderAccess.hpp"
|
||||||
#include "vm_version_zero.hpp"
|
|
||||||
|
|
||||||
#ifdef ARM
|
#ifdef ARM
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* Copyright 2012, 2013 SAP AG. All rights reserved.
|
* Copyright (c) 2012, 2014, SAP AG. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -28,7 +28,6 @@
|
|||||||
|
|
||||||
#include "runtime/atomic.hpp"
|
#include "runtime/atomic.hpp"
|
||||||
#include "runtime/os.hpp"
|
#include "runtime/os.hpp"
|
||||||
#include "vm_version_ppc.hpp"
|
|
||||||
|
|
||||||
#ifndef PPC64
|
#ifndef PPC64
|
||||||
#error "Atomic currently only implemented for PPC64"
|
#error "Atomic currently only implemented for PPC64"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* Copyright 2012, 2013 SAP AG. All rights reserved.
|
* Copyright (c) 2012, 2014, SAP AG. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -27,7 +27,6 @@
|
|||||||
#define OS_CPU_LINUX_PPC_VM_ORDERACCESS_LINUX_PPC_INLINE_HPP
|
#define OS_CPU_LINUX_PPC_VM_ORDERACCESS_LINUX_PPC_INLINE_HPP
|
||||||
|
|
||||||
#include "runtime/orderAccess.hpp"
|
#include "runtime/orderAccess.hpp"
|
||||||
#include "vm_version_ppc.hpp"
|
|
||||||
|
|
||||||
#ifndef PPC64
|
#ifndef PPC64
|
||||||
#error "OrderAccess currently only implemented for PPC64"
|
#error "OrderAccess currently only implemented for PPC64"
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -27,7 +27,6 @@
|
|||||||
|
|
||||||
#include "runtime/atomic.hpp"
|
#include "runtime/atomic.hpp"
|
||||||
#include "runtime/os.hpp"
|
#include "runtime/os.hpp"
|
||||||
#include "vm_version_sparc.hpp"
|
|
||||||
|
|
||||||
// Implementation of class atomic
|
// Implementation of class atomic
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -26,7 +26,6 @@
|
|||||||
#define OS_CPU_LINUX_SPARC_VM_ORDERACCESS_LINUX_SPARC_INLINE_HPP
|
#define OS_CPU_LINUX_SPARC_VM_ORDERACCESS_LINUX_SPARC_INLINE_HPP
|
||||||
|
|
||||||
#include "runtime/orderAccess.hpp"
|
#include "runtime/orderAccess.hpp"
|
||||||
#include "vm_version_sparc.hpp"
|
|
||||||
|
|
||||||
// Implementation of class OrderAccess.
|
// Implementation of class OrderAccess.
|
||||||
|
|
||||||
|
@ -118,7 +118,7 @@ ExtendedPC os::fetch_frame_from_context(void* ucVoid,
|
|||||||
*ret_sp = os::Linux::ucontext_get_sp(uc);
|
*ret_sp = os::Linux::ucontext_get_sp(uc);
|
||||||
}
|
}
|
||||||
if (ret_fp) {
|
if (ret_fp) {
|
||||||
*ret_fp = os::Linux::ucontext_get_fp(uc);
|
*ret_fp = (intptr_t*)NULL;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// construct empty ExtendedPC for return value checking
|
// construct empty ExtendedPC for return value checking
|
||||||
@ -136,18 +136,15 @@ ExtendedPC os::fetch_frame_from_context(void* ucVoid,
|
|||||||
|
|
||||||
frame os::fetch_frame_from_context(void* ucVoid) {
|
frame os::fetch_frame_from_context(void* ucVoid) {
|
||||||
intptr_t* sp;
|
intptr_t* sp;
|
||||||
intptr_t* fp;
|
ExtendedPC epc = fetch_frame_from_context(ucVoid, &sp, NULL);
|
||||||
ExtendedPC epc = fetch_frame_from_context(ucVoid, &sp, &fp);
|
return frame(sp, frame::unpatchable, epc.pc());
|
||||||
return frame(sp, fp, epc.pc());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
frame os::get_sender_for_C_frame(frame* fr) {
|
frame os::get_sender_for_C_frame(frame* fr) {
|
||||||
return frame(fr->sender_sp(), fr->link(), fr->sender_pc());
|
return frame(fr->sender_sp(), frame::unpatchable, fr->sender_pc());
|
||||||
}
|
}
|
||||||
|
|
||||||
frame os::current_frame() {
|
frame os::current_frame() {
|
||||||
fprintf(stderr, "current_frame()");
|
|
||||||
|
|
||||||
intptr_t* sp = StubRoutines::Sparc::flush_callers_register_windows_func()();
|
intptr_t* sp = StubRoutines::Sparc::flush_callers_register_windows_func()();
|
||||||
frame myframe(sp, frame::unpatchable,
|
frame myframe(sp, frame::unpatchable,
|
||||||
CAST_FROM_FN_PTR(address, os::current_frame));
|
CAST_FROM_FN_PTR(address, os::current_frame));
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -27,7 +27,6 @@
|
|||||||
|
|
||||||
#include "runtime/atomic.hpp"
|
#include "runtime/atomic.hpp"
|
||||||
#include "runtime/os.hpp"
|
#include "runtime/os.hpp"
|
||||||
#include "vm_version_x86.hpp"
|
|
||||||
|
|
||||||
// Implementation of class atomic
|
// Implementation of class atomic
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -28,7 +28,6 @@
|
|||||||
#include "runtime/atomic.inline.hpp"
|
#include "runtime/atomic.inline.hpp"
|
||||||
#include "runtime/orderAccess.hpp"
|
#include "runtime/orderAccess.hpp"
|
||||||
#include "runtime/os.hpp"
|
#include "runtime/os.hpp"
|
||||||
#include "vm_version_x86.hpp"
|
|
||||||
|
|
||||||
// Implementation of class OrderAccess.
|
// Implementation of class OrderAccess.
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* Copyright 2007, 2008, 2011 Red Hat, Inc.
|
* Copyright 2007, 2008, 2011 Red Hat, Inc.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
@ -28,7 +28,6 @@
|
|||||||
|
|
||||||
#include "runtime/atomic.hpp"
|
#include "runtime/atomic.hpp"
|
||||||
#include "runtime/os.hpp"
|
#include "runtime/os.hpp"
|
||||||
#include "vm_version_zero.hpp"
|
|
||||||
|
|
||||||
// Implementation of class atomic
|
// Implementation of class atomic
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* Copyright 2007, 2008, 2009 Red Hat, Inc.
|
* Copyright 2007, 2008, 2009 Red Hat, Inc.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
@ -27,7 +27,6 @@
|
|||||||
#define OS_CPU_LINUX_ZERO_VM_ORDERACCESS_LINUX_ZERO_INLINE_HPP
|
#define OS_CPU_LINUX_ZERO_VM_ORDERACCESS_LINUX_ZERO_INLINE_HPP
|
||||||
|
|
||||||
#include "runtime/orderAccess.hpp"
|
#include "runtime/orderAccess.hpp"
|
||||||
#include "vm_version_zero.hpp"
|
|
||||||
|
|
||||||
#ifdef ARM
|
#ifdef ARM
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -27,7 +27,6 @@
|
|||||||
|
|
||||||
#include "runtime/atomic.hpp"
|
#include "runtime/atomic.hpp"
|
||||||
#include "runtime/os.hpp"
|
#include "runtime/os.hpp"
|
||||||
#include "vm_version_sparc.hpp"
|
|
||||||
|
|
||||||
// Implementation of class atomic
|
// Implementation of class atomic
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -27,7 +27,6 @@
|
|||||||
|
|
||||||
#include "runtime/atomic.inline.hpp"
|
#include "runtime/atomic.inline.hpp"
|
||||||
#include "runtime/orderAccess.hpp"
|
#include "runtime/orderAccess.hpp"
|
||||||
#include "vm_version_sparc.hpp"
|
|
||||||
|
|
||||||
// Implementation of class OrderAccess.
|
// Implementation of class OrderAccess.
|
||||||
|
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
#include "classfile/classLoader.hpp"
|
#include "classfile/classLoader.hpp"
|
||||||
#include "classfile/systemDictionary.hpp"
|
#include "classfile/systemDictionary.hpp"
|
||||||
#include "classfile/vmSymbols.hpp"
|
#include "classfile/vmSymbols.hpp"
|
||||||
|
#include "code/codeCache.hpp"
|
||||||
#include "code/icBuffer.hpp"
|
#include "code/icBuffer.hpp"
|
||||||
#include "code/vtableStubs.hpp"
|
#include "code/vtableStubs.hpp"
|
||||||
#include "interpreter/interpreter.hpp"
|
#include "interpreter/interpreter.hpp"
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -27,7 +27,6 @@
|
|||||||
|
|
||||||
#include "runtime/atomic.hpp"
|
#include "runtime/atomic.hpp"
|
||||||
#include "runtime/os.hpp"
|
#include "runtime/os.hpp"
|
||||||
#include "vm_version_x86.hpp"
|
|
||||||
|
|
||||||
inline void Atomic::store (jbyte store_value, jbyte* dest) { *dest = store_value; }
|
inline void Atomic::store (jbyte store_value, jbyte* dest) { *dest = store_value; }
|
||||||
inline void Atomic::store (jshort store_value, jshort* dest) { *dest = store_value; }
|
inline void Atomic::store (jshort store_value, jshort* dest) { *dest = store_value; }
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -28,7 +28,6 @@
|
|||||||
#include "runtime/atomic.inline.hpp"
|
#include "runtime/atomic.inline.hpp"
|
||||||
#include "runtime/orderAccess.hpp"
|
#include "runtime/orderAccess.hpp"
|
||||||
#include "runtime/os.hpp"
|
#include "runtime/os.hpp"
|
||||||
#include "vm_version_x86.hpp"
|
|
||||||
|
|
||||||
// Implementation of class OrderAccess.
|
// Implementation of class OrderAccess.
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -27,7 +27,6 @@
|
|||||||
|
|
||||||
#include "runtime/atomic.hpp"
|
#include "runtime/atomic.hpp"
|
||||||
#include "runtime/os.hpp"
|
#include "runtime/os.hpp"
|
||||||
#include "vm_version_x86.hpp"
|
|
||||||
|
|
||||||
// The following alternative implementations are needed because
|
// The following alternative implementations are needed because
|
||||||
// Windows 95 doesn't support (some of) the corresponding Windows NT
|
// Windows 95 doesn't support (some of) the corresponding Windows NT
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -28,7 +28,6 @@
|
|||||||
#include "runtime/atomic.inline.hpp"
|
#include "runtime/atomic.inline.hpp"
|
||||||
#include "runtime/orderAccess.hpp"
|
#include "runtime/orderAccess.hpp"
|
||||||
#include "runtime/os.hpp"
|
#include "runtime/os.hpp"
|
||||||
#include "vm_version_x86.hpp"
|
|
||||||
|
|
||||||
// Implementation of class OrderAccess.
|
// Implementation of class OrderAccess.
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -213,7 +213,8 @@ int main(int argc, char *argv[])
|
|||||||
AD.addInclude(AD._CPP_file, "memory/allocation.inline.hpp");
|
AD.addInclude(AD._CPP_file, "memory/allocation.inline.hpp");
|
||||||
AD.addInclude(AD._CPP_file, "asm/macroAssembler.inline.hpp");
|
AD.addInclude(AD._CPP_file, "asm/macroAssembler.inline.hpp");
|
||||||
AD.addInclude(AD._CPP_file, "code/compiledIC.hpp");
|
AD.addInclude(AD._CPP_file, "code/compiledIC.hpp");
|
||||||
AD.addInclude(AD._CPP_file, "code/vmreg.hpp");
|
AD.addInclude(AD._CPP_file, "code/nativeInst.hpp");
|
||||||
|
AD.addInclude(AD._CPP_file, "code/vmreg.inline.hpp");
|
||||||
AD.addInclude(AD._CPP_file, "gc_interface/collectedHeap.inline.hpp");
|
AD.addInclude(AD._CPP_file, "gc_interface/collectedHeap.inline.hpp");
|
||||||
AD.addInclude(AD._CPP_file, "oops/compiledICHolder.hpp");
|
AD.addInclude(AD._CPP_file, "oops/compiledICHolder.hpp");
|
||||||
AD.addInclude(AD._CPP_file, "oops/markOop.hpp");
|
AD.addInclude(AD._CPP_file, "oops/markOop.hpp");
|
||||||
@ -230,23 +231,8 @@ int main(int argc, char *argv[])
|
|||||||
AD.addInclude(AD._CPP_file, "runtime/sharedRuntime.hpp");
|
AD.addInclude(AD._CPP_file, "runtime/sharedRuntime.hpp");
|
||||||
AD.addInclude(AD._CPP_file, "runtime/stubRoutines.hpp");
|
AD.addInclude(AD._CPP_file, "runtime/stubRoutines.hpp");
|
||||||
AD.addInclude(AD._CPP_file, "utilities/growableArray.hpp");
|
AD.addInclude(AD._CPP_file, "utilities/growableArray.hpp");
|
||||||
#ifdef TARGET_ARCH_x86
|
|
||||||
AD.addInclude(AD._CPP_file, "nativeInst_x86.hpp");
|
|
||||||
AD.addInclude(AD._CPP_file, "vmreg_x86.inline.hpp");
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_ARCH_sparc
|
|
||||||
AD.addInclude(AD._CPP_file, "nativeInst_sparc.hpp");
|
|
||||||
AD.addInclude(AD._CPP_file, "vmreg_sparc.inline.hpp");
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_ARCH_arm
|
|
||||||
AD.addInclude(AD._CPP_file, "nativeInst_arm.hpp");
|
|
||||||
AD.addInclude(AD._CPP_file, "vmreg_arm.inline.hpp");
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_ARCH_ppc
|
|
||||||
AD.addInclude(AD._CPP_file, "nativeInst_ppc.hpp");
|
|
||||||
AD.addInclude(AD._CPP_file, "vmreg_ppc.inline.hpp");
|
|
||||||
#endif
|
|
||||||
AD.addInclude(AD._HPP_file, "memory/allocation.hpp");
|
AD.addInclude(AD._HPP_file, "memory/allocation.hpp");
|
||||||
|
AD.addInclude(AD._HPP_file, "code/nativeInst.hpp");
|
||||||
AD.addInclude(AD._HPP_file, "opto/machnode.hpp");
|
AD.addInclude(AD._HPP_file, "opto/machnode.hpp");
|
||||||
AD.addInclude(AD._HPP_file, "opto/node.hpp");
|
AD.addInclude(AD._HPP_file, "opto/node.hpp");
|
||||||
AD.addInclude(AD._HPP_file, "opto/regalloc.hpp");
|
AD.addInclude(AD._HPP_file, "opto/regalloc.hpp");
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -26,34 +26,15 @@
|
|||||||
#define SHARE_VM_ASM_ASSEMBLER_HPP
|
#define SHARE_VM_ASM_ASSEMBLER_HPP
|
||||||
|
|
||||||
#include "asm/codeBuffer.hpp"
|
#include "asm/codeBuffer.hpp"
|
||||||
|
#include "asm/register.hpp"
|
||||||
#include "code/oopRecorder.hpp"
|
#include "code/oopRecorder.hpp"
|
||||||
#include "code/relocInfo.hpp"
|
#include "code/relocInfo.hpp"
|
||||||
#include "memory/allocation.hpp"
|
#include "memory/allocation.hpp"
|
||||||
|
#include "runtime/vm_version.hpp"
|
||||||
#include "utilities/debug.hpp"
|
#include "utilities/debug.hpp"
|
||||||
#include "utilities/growableArray.hpp"
|
#include "utilities/growableArray.hpp"
|
||||||
#include "utilities/top.hpp"
|
#include "utilities/top.hpp"
|
||||||
|
|
||||||
#ifdef TARGET_ARCH_x86
|
|
||||||
# include "register_x86.hpp"
|
|
||||||
# include "vm_version_x86.hpp"
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_ARCH_sparc
|
|
||||||
# include "register_sparc.hpp"
|
|
||||||
# include "vm_version_sparc.hpp"
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_ARCH_zero
|
|
||||||
# include "register_zero.hpp"
|
|
||||||
# include "vm_version_zero.hpp"
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_ARCH_arm
|
|
||||||
# include "register_arm.hpp"
|
|
||||||
# include "vm_version_arm.hpp"
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_ARCH_ppc
|
|
||||||
# include "register_ppc.hpp"
|
|
||||||
# include "vm_version_ppc.hpp"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// This file contains platform-independent assembler declarations.
|
// This file contains platform-independent assembler declarations.
|
||||||
|
|
||||||
class MacroAssembler;
|
class MacroAssembler;
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
#include "memory/gcLocker.hpp"
|
#include "memory/gcLocker.hpp"
|
||||||
#include "oops/methodData.hpp"
|
#include "oops/methodData.hpp"
|
||||||
#include "oops/oop.inline.hpp"
|
#include "oops/oop.inline.hpp"
|
||||||
|
#include "runtime/icache.hpp"
|
||||||
#include "utilities/copy.hpp"
|
#include "utilities/copy.hpp"
|
||||||
#include "utilities/xmlstream.hpp"
|
#include "utilities/xmlstream.hpp"
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -30,6 +30,7 @@
|
|||||||
#include "c1/c1_Instruction.hpp"
|
#include "c1/c1_Instruction.hpp"
|
||||||
#include "c1/c1_LIR.hpp"
|
#include "c1/c1_LIR.hpp"
|
||||||
#include "c1/c1_Runtime1.hpp"
|
#include "c1/c1_Runtime1.hpp"
|
||||||
|
#include "code/nativeInst.hpp"
|
||||||
#include "utilities/array.hpp"
|
#include "utilities/array.hpp"
|
||||||
#include "utilities/macros.hpp"
|
#include "utilities/macros.hpp"
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -26,21 +26,7 @@
|
|||||||
#define SHARE_VM_C1_C1_DEFS_HPP
|
#define SHARE_VM_C1_C1_DEFS_HPP
|
||||||
|
|
||||||
#include "utilities/globalDefinitions.hpp"
|
#include "utilities/globalDefinitions.hpp"
|
||||||
#ifdef TARGET_ARCH_x86
|
#include "asm/register.hpp"
|
||||||
# include "register_x86.hpp"
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_ARCH_sparc
|
|
||||||
# include "register_sparc.hpp"
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_ARCH_zero
|
|
||||||
# include "register_zero.hpp"
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_ARCH_arm
|
|
||||||
# include "register_arm.hpp"
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_ARCH_ppc
|
|
||||||
# include "register_ppc.hpp"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// set frame size and return address offset to these values in blobs
|
// set frame size and return address offset to these values in blobs
|
||||||
// (if the compiled frame uses ebp as link pointer on IA; otherwise,
|
// (if the compiled frame uses ebp as link pointer on IA; otherwise,
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -25,24 +25,8 @@
|
|||||||
#include "precompiled.hpp"
|
#include "precompiled.hpp"
|
||||||
#include "c1/c1_FrameMap.hpp"
|
#include "c1/c1_FrameMap.hpp"
|
||||||
#include "c1/c1_LIR.hpp"
|
#include "c1/c1_LIR.hpp"
|
||||||
|
#include "code/vmreg.inline.hpp"
|
||||||
#include "runtime/sharedRuntime.hpp"
|
#include "runtime/sharedRuntime.hpp"
|
||||||
#ifdef TARGET_ARCH_x86
|
|
||||||
# include "vmreg_x86.inline.hpp"
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_ARCH_sparc
|
|
||||||
# include "vmreg_sparc.inline.hpp"
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_ARCH_zero
|
|
||||||
# include "vmreg_zero.inline.hpp"
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_ARCH_arm
|
|
||||||
# include "vmreg_arm.inline.hpp"
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_ARCH_ppc
|
|
||||||
# include "vmreg_ppc.inline.hpp"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//-----------------------------------------------------
|
//-----------------------------------------------------
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -36,6 +36,7 @@
|
|||||||
#include "interpreter/bytecode.hpp"
|
#include "interpreter/bytecode.hpp"
|
||||||
#include "runtime/sharedRuntime.hpp"
|
#include "runtime/sharedRuntime.hpp"
|
||||||
#include "runtime/compilationPolicy.hpp"
|
#include "runtime/compilationPolicy.hpp"
|
||||||
|
#include "runtime/vm_version.hpp"
|
||||||
#include "utilities/bitMap.inline.hpp"
|
#include "utilities/bitMap.inline.hpp"
|
||||||
|
|
||||||
class BlockListBuilder VALUE_OBJ_CLASS_SPEC {
|
class BlockListBuilder VALUE_OBJ_CLASS_SPEC {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -30,27 +30,6 @@
|
|||||||
#include "c1/c1_MacroAssembler.hpp"
|
#include "c1/c1_MacroAssembler.hpp"
|
||||||
#include "c1/c1_ValueStack.hpp"
|
#include "c1/c1_ValueStack.hpp"
|
||||||
#include "ci/ciInstance.hpp"
|
#include "ci/ciInstance.hpp"
|
||||||
#ifdef TARGET_ARCH_x86
|
|
||||||
# include "nativeInst_x86.hpp"
|
|
||||||
# include "vmreg_x86.inline.hpp"
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_ARCH_sparc
|
|
||||||
# include "nativeInst_sparc.hpp"
|
|
||||||
# include "vmreg_sparc.inline.hpp"
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_ARCH_zero
|
|
||||||
# include "nativeInst_zero.hpp"
|
|
||||||
# include "vmreg_zero.inline.hpp"
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_ARCH_arm
|
|
||||||
# include "nativeInst_arm.hpp"
|
|
||||||
# include "vmreg_arm.inline.hpp"
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_ARCH_ppc
|
|
||||||
# include "nativeInst_ppc.hpp"
|
|
||||||
# include "vmreg_ppc.inline.hpp"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
void LIR_Assembler::patching_epilog(PatchingStub* patch, LIR_PatchCode patch_code, Register obj, CodeEmitInfo* info) {
|
void LIR_Assembler::patching_epilog(PatchingStub* patch, LIR_PatchCode patch_code, Register obj, CodeEmitInfo* info) {
|
||||||
// we must have enough patching space so that call can be inserted
|
// we must have enough patching space so that call can be inserted
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -34,6 +34,7 @@
|
|||||||
#include "ci/ciObjArray.hpp"
|
#include "ci/ciObjArray.hpp"
|
||||||
#include "runtime/sharedRuntime.hpp"
|
#include "runtime/sharedRuntime.hpp"
|
||||||
#include "runtime/stubRoutines.hpp"
|
#include "runtime/stubRoutines.hpp"
|
||||||
|
#include "runtime/vm_version.hpp"
|
||||||
#include "utilities/bitMap.inline.hpp"
|
#include "utilities/bitMap.inline.hpp"
|
||||||
#include "utilities/macros.hpp"
|
#include "utilities/macros.hpp"
|
||||||
#if INCLUDE_ALL_GCS
|
#if INCLUDE_ALL_GCS
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -31,23 +31,8 @@
|
|||||||
#include "c1/c1_LIRGenerator.hpp"
|
#include "c1/c1_LIRGenerator.hpp"
|
||||||
#include "c1/c1_LinearScan.hpp"
|
#include "c1/c1_LinearScan.hpp"
|
||||||
#include "c1/c1_ValueStack.hpp"
|
#include "c1/c1_ValueStack.hpp"
|
||||||
|
#include "code/vmreg.inline.hpp"
|
||||||
#include "utilities/bitMap.inline.hpp"
|
#include "utilities/bitMap.inline.hpp"
|
||||||
#ifdef TARGET_ARCH_x86
|
|
||||||
# include "vmreg_x86.inline.hpp"
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_ARCH_sparc
|
|
||||||
# include "vmreg_sparc.inline.hpp"
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_ARCH_zero
|
|
||||||
# include "vmreg_zero.inline.hpp"
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_ARCH_arm
|
|
||||||
# include "vmreg_arm.inline.hpp"
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_ARCH_ppc
|
|
||||||
# include "vmreg_ppc.inline.hpp"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef PRODUCT
|
#ifndef PRODUCT
|
||||||
|
|
||||||
|
@ -56,6 +56,7 @@
|
|||||||
#include "runtime/threadCritical.hpp"
|
#include "runtime/threadCritical.hpp"
|
||||||
#include "runtime/vframe.hpp"
|
#include "runtime/vframe.hpp"
|
||||||
#include "runtime/vframeArray.hpp"
|
#include "runtime/vframeArray.hpp"
|
||||||
|
#include "runtime/vm_version.hpp"
|
||||||
#include "utilities/copy.hpp"
|
#include "utilities/copy.hpp"
|
||||||
#include "utilities/events.hpp"
|
#include "utilities/events.hpp"
|
||||||
|
|
||||||
|
@ -138,6 +138,17 @@ ciField::ciField(ciInstanceKlass* klass, int index): _known_to_link_with_put(NUL
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Access check based on declared_holder. canonical_holder should not be used
|
||||||
|
// to check access because it can erroneously succeed. If this check fails,
|
||||||
|
// propagate the declared holder to will_link() which in turn will bail out
|
||||||
|
// compilation for this field access.
|
||||||
|
if (!Reflection::verify_field_access(klass->get_Klass(), declared_holder->get_Klass(), canonical_holder, field_desc.access_flags(), true)) {
|
||||||
|
_holder = declared_holder;
|
||||||
|
_offset = -1;
|
||||||
|
_is_constant = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
assert(canonical_holder == field_desc.field_holder(), "just checking");
|
assert(canonical_holder == field_desc.field_holder(), "just checking");
|
||||||
initialize_from(&field_desc);
|
initialize_from(&field_desc);
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -28,22 +28,7 @@
|
|||||||
#include "interpreter/bytecodes.hpp"
|
#include "interpreter/bytecodes.hpp"
|
||||||
#include "memory/oopFactory.hpp"
|
#include "memory/oopFactory.hpp"
|
||||||
#include "oops/constantPool.hpp"
|
#include "oops/constantPool.hpp"
|
||||||
|
#include "utilities/bytes.hpp"
|
||||||
#ifdef TARGET_ARCH_x86
|
|
||||||
# include "bytes_x86.hpp"
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_ARCH_sparc
|
|
||||||
# include "bytes_sparc.hpp"
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_ARCH_zero
|
|
||||||
# include "bytes_zero.hpp"
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_ARCH_arm
|
|
||||||
# include "bytes_arm.hpp"
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_ARCH_ppc
|
|
||||||
# include "bytes_ppc.hpp"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
u2 BytecodeConstantPool::find_or_add(BytecodeCPEntry const& bcpe) {
|
u2 BytecodeConstantPool::find_or_add(BytecodeCPEntry const& bcpe) {
|
||||||
u2 index;
|
u2 index;
|
||||||
|
@ -25,22 +25,8 @@
|
|||||||
#ifndef SHARE_VM_CLASSFILE_CLASSFILESTREAM_HPP
|
#ifndef SHARE_VM_CLASSFILE_CLASSFILESTREAM_HPP
|
||||||
#define SHARE_VM_CLASSFILE_CLASSFILESTREAM_HPP
|
#define SHARE_VM_CLASSFILE_CLASSFILESTREAM_HPP
|
||||||
|
|
||||||
|
#include "utilities/bytes.hpp"
|
||||||
#include "utilities/top.hpp"
|
#include "utilities/top.hpp"
|
||||||
#ifdef TARGET_ARCH_x86
|
|
||||||
# include "bytes_x86.hpp"
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_ARCH_sparc
|
|
||||||
# include "bytes_sparc.hpp"
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_ARCH_zero
|
|
||||||
# include "bytes_zero.hpp"
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_ARCH_arm
|
|
||||||
# include "bytes_arm.hpp"
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_ARCH_ppc
|
|
||||||
# include "bytes_ppc.hpp"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Input stream for reading .class file
|
// Input stream for reading .class file
|
||||||
//
|
//
|
||||||
|
@ -1639,9 +1639,9 @@ void java_lang_Throwable::fill_in_stack_trace(Handle throwable, methodHandle met
|
|||||||
if (fr.is_first_frame()) break;
|
if (fr.is_first_frame()) break;
|
||||||
address pc = fr.pc();
|
address pc = fr.pc();
|
||||||
if (fr.is_interpreted_frame()) {
|
if (fr.is_interpreted_frame()) {
|
||||||
intptr_t bcx = fr.interpreter_frame_bcx();
|
address bcp = fr.interpreter_frame_bcp();
|
||||||
method = fr.interpreter_frame_method();
|
method = fr.interpreter_frame_method();
|
||||||
bci = fr.is_bci(bcx) ? bcx : method->bci_from((address)bcx);
|
bci = method->bci_from(bcp);
|
||||||
fr = fr.sender(&map);
|
fr = fr.sender(&map);
|
||||||
} else {
|
} else {
|
||||||
CodeBlob* cb = fr.cb();
|
CodeBlob* cb = fr.cb();
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user