Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell11
提交
83604d9b
D
dragonwell11
项目概览
openanolis
/
dragonwell11
通知
7
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell11
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
83604d9b
编写于
2月 01, 2011
作者:
T
twisti
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
7009309: JSR 292: compiler/6991596/Test6991596.java crashes on fastdebug JDK7/b122
Reviewed-by: kvn, never
上级
b400360a
变更
15
隐藏空白更改
内联
并排
Showing
15 changed file
with
41 addition
and
230 deletion
+41
-230
hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/StubRoutines.java
...c/share/classes/sun/jvm/hotspot/runtime/StubRoutines.java
+2
-26
hotspot/src/cpu/x86/vm/cppInterpreter_x86.cpp
hotspot/src/cpu/x86/vm/cppInterpreter_x86.cpp
+1
-11
hotspot/src/cpu/x86/vm/interpreter_x86.hpp
hotspot/src/cpu/x86/vm/interpreter_x86.hpp
+1
-9
hotspot/src/cpu/x86/vm/interpreter_x86_32.cpp
hotspot/src/cpu/x86/vm/interpreter_x86_32.cpp
+1
-4
hotspot/src/cpu/x86/vm/sharedRuntime_x86_32.cpp
hotspot/src/cpu/x86/vm/sharedRuntime_x86_32.cpp
+1
-54
hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp
hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp
+2
-9
hotspot/src/cpu/x86/vm/stubGenerator_x86_32.cpp
hotspot/src/cpu/x86/vm/stubGenerator_x86_32.cpp
+24
-34
hotspot/src/cpu/x86/vm/stubRoutines_x86_32.cpp
hotspot/src/cpu/x86/vm/stubRoutines_x86_32.cpp
+3
-4
hotspot/src/cpu/x86/vm/stubRoutines_x86_32.hpp
hotspot/src/cpu/x86/vm/stubRoutines_x86_32.hpp
+2
-12
hotspot/src/cpu/x86/vm/templateInterpreter_x86_32.cpp
hotspot/src/cpu/x86/vm/templateInterpreter_x86_32.cpp
+1
-11
hotspot/src/cpu/x86/vm/templateInterpreter_x86_64.cpp
hotspot/src/cpu/x86/vm/templateInterpreter_x86_64.cpp
+1
-7
hotspot/src/cpu/x86/vm/templateTable_x86_32.cpp
hotspot/src/cpu/x86/vm/templateTable_x86_32.cpp
+0
-33
hotspot/src/cpu/zero/vm/stubRoutines_zero.cpp
hotspot/src/cpu/zero/vm/stubRoutines_zero.cpp
+1
-5
hotspot/src/cpu/zero/vm/stubRoutines_zero.hpp
hotspot/src/cpu/zero/vm/stubRoutines_zero.hpp
+1
-10
hotspot/src/share/vm/runtime/vmStructs.cpp
hotspot/src/share/vm/runtime/vmStructs.cpp
+0
-1
未找到文件。
hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/StubRoutines.java
浏览文件 @
83604d9b
/*
* Copyright (c) 2000, 20
09
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 20
11
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -31,8 +31,7 @@ import sun.jvm.hotspot.types.*;
/** Very minimal port for now to get frames working */
public
class
StubRoutines
{
private
static
AddressField
callStubReturnAddressField
;
private
static
AddressField
callStubCompiledReturnAddressField
;
private
static
AddressField
callStubReturnAddressField
;
static
{
VM
.
registerVMInitializedObserver
(
new
Observer
()
{
...
...
@@ -44,20 +43,7 @@ public class StubRoutines {
private
static
synchronized
void
initialize
(
TypeDataBase
db
)
{
Type
type
=
db
.
lookupType
(
"StubRoutines"
);
callStubReturnAddressField
=
type
.
getAddressField
(
"_call_stub_return_address"
);
// Only some platforms have specific return from compiled to call_stub
try
{
type
=
db
.
lookupType
(
"StubRoutines::x86"
);
if
(
type
!=
null
)
{
callStubCompiledReturnAddressField
=
type
.
getAddressField
(
"_call_stub_compiled_return"
);
}
}
catch
(
RuntimeException
re
)
{
callStubCompiledReturnAddressField
=
null
;
}
if
(
callStubCompiledReturnAddressField
==
null
&&
VM
.
getVM
().
getCPU
().
equals
(
"x86"
))
{
throw
new
InternalError
(
"Missing definition for _call_stub_compiled_return"
);
}
}
public
StubRoutines
()
{
...
...
@@ -65,20 +51,10 @@ public class StubRoutines {
public
boolean
returnsToCallStub
(
Address
returnPC
)
{
Address
addr
=
callStubReturnAddressField
.
getValue
();
boolean
result
=
false
;
if
(
addr
==
null
)
{
result
=
(
addr
==
returnPC
);
}
else
{
result
=
addr
.
equals
(
returnPC
);
}
if
(
result
||
callStubCompiledReturnAddressField
==
null
)
return
result
;
// Could be a return to compiled code return point
addr
=
callStubCompiledReturnAddressField
.
getValue
();
if
(
addr
==
null
)
{
return
(
addr
==
returnPC
);
}
else
{
return
(
addr
.
equals
(
returnPC
));
}
}
}
hotspot/src/cpu/x86/vm/cppInterpreter_x86.cpp
浏览文件 @
83604d9b
/*
* Copyright (c) 2007, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2007, 201
1
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -1899,8 +1899,6 @@ address InterpreterGenerator::generate_normal_entry(bool synchronized) {
Label
do_double
;
Label
done_conv
;
address
compiled_entry
=
__
pc
();
// The FPU stack is clean if UseSSE >= 2 but must be cleaned in other cases
if
(
UseSSE
<
2
)
{
__
lea
(
state
,
Address
(
rbp
,
-
(
int
)
sizeof
(
BytecodeInterpreter
)));
...
...
@@ -1934,15 +1932,7 @@ address InterpreterGenerator::generate_normal_entry(bool synchronized) {
__
jmp
(
done_conv
);
}
#if 0
// emit a sentinel we can test for when converting an interpreter
// entry point to a compiled entry point.
__ a_long(Interpreter::return_sentinel);
__ a_long((int)compiled_entry);
#endif
// Return point to interpreter from compiled/native method
InternalAddress
return_from_native_method
(
__
pc
());
__
bind
(
done_conv
);
...
...
hotspot/src/cpu/x86/vm/interpreter_x86.hpp
浏览文件 @
83604d9b
/*
* Copyright (c) 1997, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 201
1
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -26,14 +26,6 @@
#define CPU_X86_VM_INTERPRETER_X86_HPP
public
:
// Sentinel placed in the code for interpreter returns so
// that i2c adapters and osr code can recognize an interpreter
// return address and convert the return to a specialized
// block of code to handle compiedl return values and cleaning
// the fpu stack.
static
const
int
return_sentinel
;
static
Address
::
ScaleFactor
stackElementScale
()
{
return
Address
::
times_4
;
}
// Offset from rsp (which points to the last stack element)
...
...
hotspot/src/cpu/x86/vm/interpreter_x86_32.cpp
浏览文件 @
83604d9b
/*
* Copyright (c) 1997, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 201
1
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -51,9 +51,6 @@
#define __ _masm->
// Initialize the sentinel used to distinguish an interpreter return address.
const
int
Interpreter
::
return_sentinel
=
0xfeedbeed
;
//------------------------------------------------------------------------------------------------------------------------
address
AbstractInterpreterGenerator
::
generate_slow_signature_handler
()
{
...
...
hotspot/src/cpu/x86/vm/sharedRuntime_x86_32.cpp
浏览文件 @
83604d9b
/*
* Copyright (c) 2003, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 201
1
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -660,25 +660,6 @@ static void gen_i2c_adapter(MacroAssembler *masm,
int
comp_args_on_stack
,
const
BasicType
*
sig_bt
,
const
VMRegPair
*
regs
)
{
// we're being called from the interpreter but need to find the
// compiled return entry point. The return address on the stack
// should point at it and we just need to pull the old value out.
// load up the pointer to the compiled return entry point and
// rewrite our return pc. The code is arranged like so:
//
// .word Interpreter::return_sentinel
// .word address_of_compiled_return_point
// return_entry_point: blah_blah_blah
//
// So we can find the appropriate return point by loading up the word
// just prior to the current return address we have on the stack.
//
// We will only enter here from an interpreted frame and never from after
// passing thru a c2i. Azul allowed this but we do not. If we lose the
// race and use a c2i we will remain interpreted for the race loser(s).
// This removes all sorts of headaches on the x86 side and also eliminates
// the possibility of having c2i -> i2c -> c2i -> ... endless transitions.
// Note: rsi contains the senderSP on entry. We must preserve it since
// we may do a i2c -> c2i transition if we lose a race where compiled
...
...
@@ -687,40 +668,6 @@ static void gen_i2c_adapter(MacroAssembler *masm,
// Pick up the return address
__
movptr
(
rax
,
Address
(
rsp
,
0
));
// If UseSSE >= 2 then no cleanup is needed on the return to the
// interpreter so skip fixing up the return entry point unless
// VerifyFPU is enabled.
if
(
UseSSE
<
2
||
VerifyFPU
)
{
Label
skip
,
chk_int
;
// If we were called from the call stub we need to do a little bit different
// cleanup than if the interpreter returned to the call stub.
ExternalAddress
stub_return_address
(
StubRoutines
::
_call_stub_return_address
);
__
cmpptr
(
rax
,
stub_return_address
.
addr
());
__
jcc
(
Assembler
::
notEqual
,
chk_int
);
assert
(
StubRoutines
::
x86
::
get_call_stub_compiled_return
()
!=
NULL
,
"must be set"
);
__
lea
(
rax
,
ExternalAddress
(
StubRoutines
::
x86
::
get_call_stub_compiled_return
()));
__
jmp
(
skip
);
// It must be the interpreter since we never get here via a c2i (unlike Azul)
__
bind
(
chk_int
);
#ifdef ASSERT
{
Label
ok
;
__
cmpl
(
Address
(
rax
,
-
2
*
wordSize
),
Interpreter
::
return_sentinel
);
__
jcc
(
Assembler
::
equal
,
ok
);
__
int3
();
__
bind
(
ok
);
}
#endif // ASSERT
__
movptr
(
rax
,
Address
(
rax
,
-
wordSize
));
__
bind
(
skip
);
}
// rax, now contains the compiled return entry point which will do an
// cleanup needed for the return from compiled to interpreted.
// Must preserve original SP for loading incoming arguments because
// we need to align the outgoing SP for compiled code.
__
movptr
(
rdi
,
rsp
);
...
...
hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp
浏览文件 @
83604d9b
/*
* Copyright (c) 2003, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 201
1
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -610,14 +610,6 @@ static void gen_i2c_adapter(MacroAssembler *masm,
const
BasicType
*
sig_bt
,
const
VMRegPair
*
regs
)
{
//
// We will only enter here from an interpreted frame and never from after
// passing thru a c2i. Azul allowed this but we do not. If we lose the
// race and use a c2i we will remain interpreted for the race loser(s).
// This removes all sorts of headaches on the x86 side and also eliminates
// the possibility of having c2i -> i2c -> c2i -> ... endless transitions.
// Note: r13 contains the senderSP on entry. We must preserve it since
// we may do a i2c -> c2i transition if we lose a race where compiled
// code goes non-entrant while we get args ready.
...
...
@@ -627,6 +619,7 @@ static void gen_i2c_adapter(MacroAssembler *masm,
// save code can segv when fxsave instructions find improperly
// aligned stack pointer.
// Pick up the return address
__
movptr
(
rax
,
Address
(
rsp
,
0
));
// Must preserve original SP for loading incoming arguments because
...
...
hotspot/src/cpu/x86/vm/stubGenerator_x86_32.cpp
浏览文件 @
83604d9b
/*
* Copyright (c) 1999, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 201
1
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -240,9 +240,30 @@ class StubGenerator: public StubCodeGenerator {
BLOCK_COMMENT
(
"call_stub_return_address:"
);
return_address
=
__
pc
();
Label
common_return
;
#ifdef COMPILER2
{
Label
L_skip
;
if
(
UseSSE
>=
2
)
{
__
verify_FPU
(
0
,
"call_stub_return"
);
}
else
{
for
(
int
i
=
1
;
i
<
8
;
i
++
)
{
__
ffree
(
i
);
}
__
BIND
(
common_return
);
// UseSSE <= 1 so double result should be left on TOS
__
movl
(
rsi
,
result_type
);
__
cmpl
(
rsi
,
T_DOUBLE
);
__
jcc
(
Assembler
::
equal
,
L_skip
);
if
(
UseSSE
==
0
)
{
// UseSSE == 0 so float result should be left on TOS
__
cmpl
(
rsi
,
T_FLOAT
);
__
jcc
(
Assembler
::
equal
,
L_skip
);
}
__
ffree
(
0
);
}
__
BIND
(
L_skip
);
}
#endif // COMPILER2
// store result depending on type
// (everything that is not T_LONG, T_FLOAT or T_DOUBLE is treated as T_INT)
...
...
@@ -305,37 +326,6 @@ class StubGenerator: public StubCodeGenerator {
}
__
jmp
(
exit
);
// If we call compiled code directly from the call stub we will
// need to adjust the return back to the call stub to a specialized
// piece of code that can handle compiled results and cleaning the fpu
// stack. compiled code will be set to return here instead of the
// return above that handles interpreter returns.
BLOCK_COMMENT
(
"call_stub_compiled_return:"
);
StubRoutines
::
x86
::
set_call_stub_compiled_return
(
__
pc
());
#ifdef COMPILER2
if
(
UseSSE
>=
2
)
{
__
verify_FPU
(
0
,
"call_stub_compiled_return"
);
}
else
{
for
(
int
i
=
1
;
i
<
8
;
i
++
)
{
__
ffree
(
i
);
}
// UseSSE <= 1 so double result should be left on TOS
__
movl
(
rsi
,
result_type
);
__
cmpl
(
rsi
,
T_DOUBLE
);
__
jcc
(
Assembler
::
equal
,
common_return
);
if
(
UseSSE
==
0
)
{
// UseSSE == 0 so float result should be left on TOS
__
cmpl
(
rsi
,
T_FLOAT
);
__
jcc
(
Assembler
::
equal
,
common_return
);
}
__
ffree
(
0
);
}
#endif
/* COMPILER2 */
__
jmp
(
common_return
);
return
start
;
}
...
...
hotspot/src/cpu/x86/vm/stubRoutines_x86_32.cpp
浏览文件 @
83604d9b
/*
* Copyright (c) 1997, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 201
1
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -39,6 +39,5 @@
// Implementation of the platform-specific part of StubRoutines - for
// a description of how to extend it, see the stubRoutines.hpp file.
address
StubRoutines
::
x86
::
_verify_mxcsr_entry
=
NULL
;
address
StubRoutines
::
x86
::
_verify_fpu_cntrl_wrd_entry
=
NULL
;
address
StubRoutines
::
x86
::
_call_stub_compiled_return
=
NULL
;
address
StubRoutines
::
x86
::
_verify_mxcsr_entry
=
NULL
;
address
StubRoutines
::
x86
::
_verify_fpu_cntrl_wrd_entry
=
NULL
;
hotspot/src/cpu/x86/vm/stubRoutines_x86_32.hpp
浏览文件 @
83604d9b
/*
* Copyright (c) 1997, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 201
1
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -44,24 +44,14 @@ class x86 {
friend
class
VMStructs
;
private:
// If we call compiled code directly from the call stub we will
// need to adjust the return back to the call stub to a specialized
// piece of code that can handle compiled results and cleaning the fpu
// stack. The variable holds that location.
static
address
_call_stub_compiled_return
;
static
address
_verify_mxcsr_entry
;
static
address
_verify_fpu_cntrl_wrd_entry
;
static
jint
_mxcsr_std
;
public:
static
address
verify_mxcsr_entry
()
{
return
_verify_mxcsr_entry
;
}
static
address
verify_fpu_cntrl_wrd_entry
()
{
return
_verify_fpu_cntrl_wrd_entry
;
}
static
address
get_call_stub_compiled_return
()
{
return
_call_stub_compiled_return
;
}
static
void
set_call_stub_compiled_return
(
address
ret
)
{
_call_stub_compiled_return
=
ret
;
}
};
static
bool
returns_to_call_stub
(
address
return_pc
)
{
return
(
return_pc
==
_call_stub_return_address
)
||
return_pc
==
x86
::
get_call_stub_compiled_return
();
}
static
bool
returns_to_call_stub
(
address
return_pc
)
{
return
return_pc
==
_call_stub_return_address
;
}
#endif // CPU_X86_VM_STUBROUTINES_X86_32_HPP
hotspot/src/cpu/x86/vm/templateInterpreter_x86_32.cpp
浏览文件 @
83604d9b
...
...
@@ -177,9 +177,7 @@ address TemplateInterpreterGenerator::generate_continuation_for(TosState state)
address
TemplateInterpreterGenerator
::
generate_return_entry_for
(
TosState
state
,
int
step
)
{
TosState
incoming_state
=
state
;
Label
interpreter_entry
;
address
compiled_entry
=
__
pc
();
address
entry
=
__
pc
();
#ifdef COMPILER2
// The FPU stack is clean if UseSSE >= 2 but must be cleaned in other cases
...
...
@@ -197,14 +195,6 @@ address TemplateInterpreterGenerator::generate_return_entry_for(TosState state,
__
MacroAssembler
::
verify_FPU
(
0
,
"generate_return_entry_for compiled"
);
}
__
jmp
(
interpreter_entry
,
relocInfo
::
none
);
// emit a sentinel we can test for when converting an interpreter
// entry point to a compiled entry point.
__
a_long
(
Interpreter
::
return_sentinel
);
__
a_long
((
int
)
compiled_entry
);
address
entry
=
__
pc
();
__
bind
(
interpreter_entry
);
// In SSE mode, interpreter returns FP results in xmm0 but they need
// to end up back on the FPU so it can operate on them.
if
(
incoming_state
==
ftos
&&
UseSSE
>=
1
)
{
...
...
hotspot/src/cpu/x86/vm/templateInterpreter_x86_64.cpp
浏览文件 @
83604d9b
...
...
@@ -190,13 +190,7 @@ address TemplateInterpreterGenerator::generate_continuation_for(TosState state)
}
address
TemplateInterpreterGenerator
::
generate_return_entry_for
(
TosState
state
,
int
step
)
{
// amd64 doesn't need to do anything special about compiled returns
// to the interpreter so the code that exists on x86 to place a sentinel
// here and the specialized cleanup code is not needed here.
address
TemplateInterpreterGenerator
::
generate_return_entry_for
(
TosState
state
,
int
step
)
{
address
entry
=
__
pc
();
// Restore stack bottom in case i2c adjusted stack
...
...
hotspot/src/cpu/x86/vm/templateTable_x86_32.cpp
浏览文件 @
83604d9b
...
...
@@ -1710,39 +1710,6 @@ void TemplateTable::branch(bool is_jsr, bool is_wide) {
__
pop
(
rdi
);
// get return address
__
mov
(
rsp
,
rdx
);
// set sp to sender sp
Label
skip
;
Label
chkint
;
// The interpreter frame we have removed may be returning to
// either the callstub or the interpreter. Since we will
// now be returning from a compiled (OSR) nmethod we must
// adjust the return to the return were it can handler compiled
// results and clean the fpu stack. This is very similar to
// what a i2c adapter must do.
// Are we returning to the call stub?
__
cmp32
(
rdi
,
ExternalAddress
(
StubRoutines
::
_call_stub_return_address
));
__
jcc
(
Assembler
::
notEqual
,
chkint
);
// yes adjust to the specialized call stub return.
assert
(
StubRoutines
::
x86
::
get_call_stub_compiled_return
()
!=
NULL
,
"must be set"
);
__
lea
(
rdi
,
ExternalAddress
(
StubRoutines
::
x86
::
get_call_stub_compiled_return
()));
__
jmp
(
skip
);
__
bind
(
chkint
);
// Are we returning to the interpreter? Look for sentinel
__
cmpl
(
Address
(
rdi
,
-
2
*
wordSize
),
Interpreter
::
return_sentinel
);
__
jcc
(
Assembler
::
notEqual
,
skip
);
// Adjust to compiled return back to interpreter
__
movptr
(
rdi
,
Address
(
rdi
,
-
wordSize
));
__
bind
(
skip
);
// Align stack pointer for compiled code (note that caller is
// responsible for undoing this fixup by remembering the old SP
// in an rbp,-relative location)
...
...
hotspot/src/cpu/zero/vm/stubRoutines_zero.cpp
浏览文件 @
83604d9b
/*
* Copyright (c) 2003, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 201
1
, Oracle and/or its affiliates. All rights reserved.
* Copyright 2008, 2009 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
...
...
@@ -30,7 +30,3 @@
#ifdef TARGET_OS_FAMILY_linux
# include "thread_linux.inline.hpp"
#endif
#ifdef IA32
address
StubRoutines
::
x86
::
_call_stub_compiled_return
=
NULL
;
#endif // IA32
hotspot/src/cpu/zero/vm/stubRoutines_zero.hpp
浏览文件 @
83604d9b
/*
* Copyright (c) 2003, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 201
1
, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
...
...
@@ -48,13 +48,4 @@
method_handles_adapters_code_size
=
0
};
#ifdef IA32
class
x86
{
friend
class
VMStructs
;
private:
static
address
_call_stub_compiled_return
;
};
#endif // IA32
#endif // CPU_ZERO_VM_STUBROUTINES_ZERO_HPP
hotspot/src/share/vm/runtime/vmStructs.cpp
浏览文件 @
83604d9b
...
...
@@ -729,7 +729,6 @@ static inline uint64_t cast_uint64_t(size_t x)
/***********************************/
\
\
static_field(StubRoutines, _call_stub_return_address, address) \
IA32_ONLY(static_field(StubRoutines::x86,_call_stub_compiled_return, address)) \
\
/***************************************/
\
/* PcDesc and other compiled code info */
\
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录