Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
ab6a43b7
D
dragonwell8_hotspot
项目概览
openanolis
/
dragonwell8_hotspot
通知
2
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_hotspot
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
ab6a43b7
编写于
2月 24, 2012
作者:
A
amurillo
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
fa7c7f29
a034425d
变更
27
显示空白变更内容
内联
并排
Showing
27 changed file
with
246 addition
and
28 deletion
+246
-28
agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPool.java
.../src/share/classes/sun/jvm/hotspot/oops/ConstantPool.java
+6
-1
make/hotspot_version
make/hotspot_version
+2
-2
make/linux/makefiles/ppc.make
make/linux/makefiles/ppc.make
+3
-0
src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp
src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp
+20
-0
src/cpu/x86/vm/c1_LIRAssembler_x86.cpp
src/cpu/x86/vm/c1_LIRAssembler_x86.cpp
+19
-0
src/cpu/x86/vm/vm_version_x86.cpp
src/cpu/x86/vm/vm_version_x86.cpp
+5
-5
src/os/bsd/vm/osThread_bsd.cpp
src/os/bsd/vm/osThread_bsd.cpp
+5
-1
src/os/bsd/vm/osThread_bsd.hpp
src/os/bsd/vm/osThread_bsd.hpp
+22
-3
src/os/bsd/vm/os_bsd.cpp
src/os/bsd/vm/os_bsd.cpp
+37
-3
src/os_cpu/bsd_x86/vm/vmStructs_bsd_x86.hpp
src/os_cpu/bsd_x86/vm/vmStructs_bsd_x86.hpp
+9
-3
src/share/vm/c1/c1_Canonicalizer.cpp
src/share/vm/c1/c1_Canonicalizer.cpp
+1
-0
src/share/vm/c1/c1_Canonicalizer.hpp
src/share/vm/c1/c1_Canonicalizer.hpp
+1
-0
src/share/vm/c1/c1_GraphBuilder.cpp
src/share/vm/c1/c1_GraphBuilder.cpp
+17
-1
src/share/vm/c1/c1_IR.cpp
src/share/vm/c1/c1_IR.cpp
+1
-0
src/share/vm/c1/c1_IR.hpp
src/share/vm/c1/c1_IR.hpp
+3
-0
src/share/vm/c1/c1_Instruction.hpp
src/share/vm/c1/c1_Instruction.hpp
+19
-0
src/share/vm/c1/c1_InstructionPrinter.cpp
src/share/vm/c1/c1_InstructionPrinter.cpp
+16
-0
src/share/vm/c1/c1_InstructionPrinter.hpp
src/share/vm/c1/c1_InstructionPrinter.hpp
+1
-0
src/share/vm/c1/c1_LIR.cpp
src/share/vm/c1/c1_LIR.cpp
+8
-0
src/share/vm/c1/c1_LIR.hpp
src/share/vm/c1/c1_LIR.hpp
+8
-0
src/share/vm/c1/c1_LIRAssembler.cpp
src/share/vm/c1/c1_LIRAssembler.cpp
+16
-0
src/share/vm/c1/c1_LIRAssembler.hpp
src/share/vm/c1/c1_LIRAssembler.hpp
+4
-0
src/share/vm/c1/c1_LIRGenerator.cpp
src/share/vm/c1/c1_LIRGenerator.cpp
+17
-0
src/share/vm/c1/c1_LIRGenerator.hpp
src/share/vm/c1/c1_LIRGenerator.hpp
+1
-0
src/share/vm/c1/c1_Optimizer.cpp
src/share/vm/c1/c1_Optimizer.cpp
+2
-0
src/share/vm/c1/c1_ValueMap.hpp
src/share/vm/c1/c1_ValueMap.hpp
+1
-0
src/share/vm/utilities/globalDefinitions_gcc.hpp
src/share/vm/utilities/globalDefinitions_gcc.hpp
+2
-9
未找到文件。
agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPool.java
浏览文件 @
ab6a43b7
...
...
@@ -648,7 +648,12 @@ public class ConstantPool extends Oop implements ClassConstants {
}
public
void
printValueOn
(
PrintStream
tty
)
{
tty
.
print
(
"ConstantPool for "
+
getPoolHolder
().
getName
().
asString
());
Oop
holder
=
poolHolder
.
getValue
(
this
);
if
(
holder
instanceof
Klass
)
{
tty
.
print
(
"ConstantPool for "
+
((
Klass
)
holder
).
getName
().
asString
());
}
else
{
tty
.
print
(
"ConstantPool for partially loaded class"
);
}
}
public
long
getObjectSize
()
{
...
...
make/hotspot_version
浏览文件 @
ab6a43b7
...
...
@@ -33,9 +33,9 @@
# Don't put quotes (fail windows build).
HOTSPOT_VM_COPYRIGHT=Copyright 2011
HS_MAJOR_VER=2
3
HS_MAJOR_VER=2
4
HS_MINOR_VER=0
HS_BUILD_NUMBER=
16
HS_BUILD_NUMBER=
01
JDK_MAJOR_VER=1
JDK_MINOR_VER=8
...
...
make/linux/makefiles/ppc.make
浏览文件 @
ab6a43b7
...
...
@@ -28,3 +28,6 @@ OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
# Must also specify if CPU is big endian
CFLAGS
+=
-DVM_BIG_ENDIAN
ifdef
E500V2
ASFLAGS
+=
-Wa
,-mspe
-Wa
,--defsym
-Wa
,E500V2
=
1
endif
src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp
浏览文件 @
ab6a43b7
...
...
@@ -3231,6 +3231,26 @@ void LIR_Assembler::membar_release() {
// no-op on TSO
}
void
LIR_Assembler
::
membar_loadload
()
{
// no-op
//__ membar(Assembler::Membar_mask_bits(Assembler::loadload));
}
void
LIR_Assembler
::
membar_storestore
()
{
// no-op
//__ membar(Assembler::Membar_mask_bits(Assembler::storestore));
}
void
LIR_Assembler
::
membar_loadstore
()
{
// no-op
//__ membar(Assembler::Membar_mask_bits(Assembler::loadstore));
}
void
LIR_Assembler
::
membar_storeload
()
{
__
membar
(
Assembler
::
Membar_mask_bits
(
Assembler
::
StoreLoad
));
}
// Pack two sequential registers containing 32 bit values
// into a single 64 bit register.
// src and src->successor() are packed into dst
...
...
src/cpu/x86/vm/c1_LIRAssembler_x86.cpp
浏览文件 @
ab6a43b7
...
...
@@ -3713,6 +3713,25 @@ void LIR_Assembler::membar_release() {
// __ store_fence();
}
void
LIR_Assembler
::
membar_loadload
()
{
// no-op
//__ membar(Assembler::Membar_mask_bits(Assembler::loadload));
}
void
LIR_Assembler
::
membar_storestore
()
{
// no-op
//__ membar(Assembler::Membar_mask_bits(Assembler::storestore));
}
void
LIR_Assembler
::
membar_loadstore
()
{
// no-op
//__ membar(Assembler::Membar_mask_bits(Assembler::loadstore));
}
void
LIR_Assembler
::
membar_storeload
()
{
__
membar
(
Assembler
::
Membar_mask_bits
(
Assembler
::
StoreLoad
));
}
void
LIR_Assembler
::
get_thread
(
LIR_Opr
result_reg
)
{
assert
(
result_reg
->
is_register
(),
"check"
);
#ifdef _LP64
...
...
src/cpu/x86/vm/vm_version_x86.cpp
浏览文件 @
ab6a43b7
/*
* Copyright (c) 1997, 201
1
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 201
2
, 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
...
...
@@ -65,8 +65,8 @@ class VM_Version_StubGenerator: public StubCodeGenerator {
address
generate_getPsrInfo
()
{
// Flags to test CPU type.
const
uint32_t
EFL_AC
=
0x40000
;
const
uint32_t
EFL_ID
=
0x200000
;
const
uint32_t
HS_
EFL_AC
=
0x40000
;
const
uint32_t
HS_
EFL_ID
=
0x200000
;
// Values for when we don't have a CPUID instruction.
const
int
CPU_FAMILY_SHIFT
=
8
;
const
uint32_t
CPU_FAMILY_386
=
(
3
<<
CPU_FAMILY_SHIFT
);
...
...
@@ -100,7 +100,7 @@ class VM_Version_StubGenerator: public StubCodeGenerator {
//
// if we are unable to change the AC flag, we have a 386
//
__
xorl
(
rax
,
EFL_AC
);
__
xorl
(
rax
,
HS_
EFL_AC
);
__
push
(
rax
);
__
popf
();
__
pushf
();
...
...
@@ -118,7 +118,7 @@ class VM_Version_StubGenerator: public StubCodeGenerator {
//
__
bind
(
detect_486
);
__
mov
(
rax
,
rcx
);
__
xorl
(
rax
,
EFL_ID
);
__
xorl
(
rax
,
HS_
EFL_ID
);
__
push
(
rax
);
__
popf
();
__
pushf
();
...
...
src/os/bsd/vm/osThread_bsd.cpp
浏览文件 @
ab6a43b7
/*
* Copyright (c) 1999, 201
1
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 201
2
, 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
...
...
@@ -49,7 +49,11 @@
void
OSThread
::
pd_initialize
()
{
assert
(
this
!=
NULL
,
"check"
);
#ifdef __APPLE__
_thread_id
=
0
;
#else
_thread_id
=
NULL
;
#endif
_pthread_id
=
NULL
;
_siginfo
=
NULL
;
_ucontext
=
NULL
;
...
...
src/os/bsd/vm/osThread_bsd.hpp
浏览文件 @
ab6a43b7
/*
* Copyright (c) 1999, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 201
2
, 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
...
...
@@ -40,10 +40,17 @@
private
:
#ifdef _ALLBSD_SOURCE
// _thread_id and _pthread_id are the same on BSD
// keep both to minimize code divergence in os_bsd.cpp
#ifdef __APPLE__
thread_t
_thread_id
;
#else
pthread_t
_thread_id
;
#endif
// _pthread_id is the pthread id, which is used by library calls
// (e.g. pthread_kill).
pthread_t
_pthread_id
;
#else
// _thread_id is kernel thread id (similar to LWP id on Solaris). Each
// thread has a unique thread_id (BsdThreads or NPTL). It can be used
...
...
@@ -64,9 +71,15 @@
void
set_caller_sigmask
(
sigset_t
sigmask
)
{
_caller_sigmask
=
sigmask
;
}
#ifdef _ALLBSD_SOURCE
#ifdef __APPLE__
thread_t
thread_id
()
const
{
return
_thread_id
;
}
#else
pthread_t
thread_id
()
const
{
return
_thread_id
;
}
#endif
#else
pid_t
thread_id
()
const
{
return
_thread_id
;
...
...
@@ -84,9 +97,15 @@
}
#endif // ASSERT
#ifdef _ALLBSD_SOURCE
#ifdef __APPLE__
void
set_thread_id
(
thread_t
id
)
{
_thread_id
=
id
;
}
#else
void
set_thread_id
(
pthread_t
id
)
{
_thread_id
=
id
;
}
#endif
#else
void
set_thread_id
(
pid_t
id
)
{
_thread_id
=
id
;
...
...
src/os/bsd/vm/os_bsd.cpp
浏览文件 @
ab6a43b7
...
...
@@ -568,6 +568,25 @@ void os::init_system_properties_values() {
sprintf
(
ld_library_path
,
"%s:%s"
,
v
,
t
);
free
(
t
);
}
#ifdef __APPLE__
// Apple's Java6 has "." at the beginning of java.library.path.
// OpenJDK on Windows has "." at the end of java.library.path.
// OpenJDK on Linux and Solaris don't have "." in java.library.path
// at all. To ease the transition from Apple's Java6 to OpenJDK7,
// "." is appended to the end of java.library.path. Yes, this
// could cause a change in behavior, but Apple's Java6 behavior
// can be achieved by putting "." at the beginning of the
// JAVA_LIBRARY_PATH environment variable.
{
char
*
t
=
ld_library_path
;
// that's +3 for appending ":." and the trailing '\0'
ld_library_path
=
(
char
*
)
malloc
(
strlen
(
t
)
+
3
);
sprintf
(
ld_library_path
,
"%s:%s"
,
t
,
"."
);
free
(
t
);
}
#endif
Arguments
::
set_library_path
(
ld_library_path
);
}
...
...
@@ -979,8 +998,13 @@ static void *java_start(Thread *thread) {
}
#ifdef _ALLBSD_SOURCE
#ifdef __APPLE__
// thread_id is mach thread on macos
osthread
->
set_thread_id
(
::
mach_thread_self
());
#else
// thread_id is pthread_id on BSD
osthread
->
set_thread_id
(
::
pthread_self
());
#endif
#else
// thread_id is kernel thread id (similar to Solaris LWP id)
osthread
->
set_thread_id
(
os
::
Bsd
::
gettid
());
...
...
@@ -1171,7 +1195,11 @@ bool os::create_attached_thread(JavaThread* thread) {
// Store pthread info into the OSThread
#ifdef _ALLBSD_SOURCE
#ifdef __APPLE__
osthread
->
set_thread_id
(
::
mach_thread_self
());
#else
osthread
->
set_thread_id
(
::
pthread_self
());
#endif
#else
osthread
->
set_thread_id
(
os
::
Bsd
::
gettid
());
#endif
...
...
@@ -1788,7 +1816,13 @@ size_t os::lasterror(char *buf, size_t len) {
return
n
;
}
intx
os
::
current_thread_id
()
{
return
(
intx
)
pthread_self
();
}
intx
os
::
current_thread_id
()
{
#ifdef __APPLE__
return
(
intx
)
::
mach_thread_self
();
#else
return
(
intx
)
::
pthread_self
();
#endif
}
int
os
::
current_process_id
()
{
// Under the old bsd thread library, bsd gives each thread
...
...
@@ -5133,9 +5167,9 @@ jlong os::thread_cpu_time(Thread *thread, bool user_sys_cpu_time) {
struct
thread_basic_info
tinfo
;
mach_msg_type_number_t
tcount
=
THREAD_INFO_MAX
;
kern_return_t
kr
;
mach_port
_t
mach_thread
;
thread
_t
mach_thread
;
mach_thread
=
pthread_mach_thread_np
(
thread
->
osthread
()
->
thread_id
()
);
mach_thread
=
thread
->
osthread
()
->
thread_id
(
);
kr
=
thread_info
(
mach_thread
,
THREAD_BASIC_INFO
,
(
thread_info_t
)
&
tinfo
,
&
tcount
);
if
(
kr
!=
KERN_SUCCESS
)
return
-
1
;
...
...
src/os_cpu/bsd_x86/vm/vmStructs_bsd_x86.hpp
浏览文件 @
ab6a43b7
/*
* Copyright (c) 2000, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 201
2
, 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
...
...
@@ -29,12 +29,18 @@
// constants required by the Serviceability Agent. This file is
// referenced by vmStructs.cpp.
#ifdef __APPLE__
#define OS_THREAD_ID_TYPE thread_t
#else
#define OS_THREAD_ID_TYPE pthread_t
#endif
#define VM_STRUCTS_OS_CPU(nonstatic_field, static_field, unchecked_nonstatic_field, volatile_nonstatic_field, nonproduct_nonstatic_field, c2_nonstatic_field, unchecked_c1_static_field, unchecked_c2_static_field, last_entry) \
\
/******************************/
\
/* Threads (NOTE: incomplete) */
\
/******************************/
\
nonstatic_field(OSThread, _thread_id,
pthread_t)
\
nonstatic_field(OSThread, _thread_id,
OS_THREAD_ID_TYPE)
\
nonstatic_field(OSThread, _pthread_id, pthread_t) \
/* This must be the last entry, and must be present */
\
last_entry()
...
...
@@ -46,7 +52,7 @@
/* Posix Thread IDs */
\
/**********************/
\
\
declare_
integer_type(pid_t)
\
declare_
unsigned_integer_type(thread_t)
\
declare_unsigned_integer_type(pthread_t) \
\
/* This must be the last entry, and must be present */
\
...
...
src/share/vm/c1/c1_Canonicalizer.cpp
浏览文件 @
ab6a43b7
...
...
@@ -908,3 +908,4 @@ void Canonicalizer::do_UnsafePrefetchWrite(UnsafePrefetchWrite* x) {}
void
Canonicalizer
::
do_ProfileCall
(
ProfileCall
*
x
)
{}
void
Canonicalizer
::
do_ProfileInvoke
(
ProfileInvoke
*
x
)
{}
void
Canonicalizer
::
do_RuntimeCall
(
RuntimeCall
*
x
)
{}
void
Canonicalizer
::
do_MemBar
(
MemBar
*
x
)
{}
src/share/vm/c1/c1_Canonicalizer.hpp
浏览文件 @
ab6a43b7
...
...
@@ -104,6 +104,7 @@ class Canonicalizer: InstructionVisitor {
virtual
void
do_ProfileCall
(
ProfileCall
*
x
);
virtual
void
do_ProfileInvoke
(
ProfileInvoke
*
x
);
virtual
void
do_RuntimeCall
(
RuntimeCall
*
x
);
virtual
void
do_MemBar
(
MemBar
*
x
);
};
#endif // SHARE_VM_C1_C1_CANONICALIZER_HPP
src/share/vm/c1/c1_GraphBuilder.cpp
浏览文件 @
ab6a43b7
...
...
@@ -1418,6 +1418,12 @@ void GraphBuilder::method_return(Value x) {
call_register_finalizer
();
}
bool
need_mem_bar
=
false
;
if
(
method
()
->
name
()
==
ciSymbol
::
object_initializer_name
()
&&
scope
()
->
wrote_final
())
{
need_mem_bar
=
true
;
}
// Check to see whether we are inlining. If so, Return
// instructions become Gotos to the continuation point.
if
(
continuation
()
!=
NULL
)
{
...
...
@@ -1437,6 +1443,10 @@ void GraphBuilder::method_return(Value x) {
monitorexit
(
state
()
->
lock_at
(
0
),
SynchronizationEntryBCI
);
}
if
(
need_mem_bar
)
{
append
(
new
MemBar
(
lir_membar_storestore
));
}
// State at end of inlined method is the state of the caller
// without the method parameters on stack, including the
// return value, if any, of the inlined method on operand stack.
...
...
@@ -1456,7 +1466,6 @@ void GraphBuilder::method_return(Value x) {
// the continuation point.
append_with_bci
(
goto_callee
,
scope_data
()
->
continuation
()
->
bci
());
incr_num_returns
();
return
;
}
...
...
@@ -1472,6 +1481,10 @@ void GraphBuilder::method_return(Value x) {
append_split
(
new
MonitorExit
(
receiver
,
state
()
->
unlock
()));
}
if
(
need_mem_bar
)
{
append
(
new
MemBar
(
lir_membar_storestore
));
}
append
(
new
Return
(
x
));
}
...
...
@@ -1504,6 +1517,9 @@ void GraphBuilder::access_field(Bytecodes::Code code) {
}
}
if
(
field
->
is_final
()
&&
(
code
==
Bytecodes
::
_putfield
))
{
scope
()
->
set_wrote_final
();
}
const
int
offset
=
!
needs_patching
?
field
->
offset
()
:
-
1
;
switch
(
code
)
{
...
...
src/share/vm/c1/c1_IR.cpp
浏览文件 @
ab6a43b7
...
...
@@ -141,6 +141,7 @@ IRScope::IRScope(Compilation* compilation, IRScope* caller, int caller_bci, ciMe
_xhandlers
=
new
XHandlers
(
method
);
_number_of_locks
=
0
;
_monitor_pairing_ok
=
method
->
has_balanced_monitors
();
_wrote_final
=
false
;
_start
=
NULL
;
if
(
osr_bci
==
-
1
)
{
...
...
src/share/vm/c1/c1_IR.hpp
浏览文件 @
ab6a43b7
...
...
@@ -149,6 +149,7 @@ class IRScope: public CompilationResourceObj {
XHandlers
*
_xhandlers
;
// the exception handlers
int
_number_of_locks
;
// the number of monitor lock slots needed
bool
_monitor_pairing_ok
;
// the monitor pairing info
bool
_wrote_final
;
// has written final field
BlockBegin
*
_start
;
// the start block, successsors are method entries
BitMap
_requires_phi_function
;
// bit is set if phi functions at loop headers are necessary for a local variable
...
...
@@ -181,6 +182,8 @@ class IRScope: public CompilationResourceObj {
void
set_min_number_of_locks
(
int
n
)
{
if
(
n
>
_number_of_locks
)
_number_of_locks
=
n
;
}
bool
monitor_pairing_ok
()
const
{
return
_monitor_pairing_ok
;
}
BlockBegin
*
start
()
const
{
return
_start
;
}
void
set_wrote_final
()
{
_wrote_final
=
true
;
}
bool
wrote_final
()
const
{
return
_wrote_final
;
}
};
...
...
src/share/vm/c1/c1_Instruction.hpp
浏览文件 @
ab6a43b7
...
...
@@ -107,6 +107,7 @@ class UnsafePrefetchWrite;
class
ProfileCall
;
class
ProfileInvoke
;
class
RuntimeCall
;
class
MemBar
;
// A Value is a reference to the instruction creating the value
typedef
Instruction
*
Value
;
...
...
@@ -204,6 +205,7 @@ class InstructionVisitor: public StackObj {
virtual
void
do_ProfileCall
(
ProfileCall
*
x
)
=
0
;
virtual
void
do_ProfileInvoke
(
ProfileInvoke
*
x
)
=
0
;
virtual
void
do_RuntimeCall
(
RuntimeCall
*
x
)
=
0
;
virtual
void
do_MemBar
(
MemBar
*
x
)
=
0
;
};
...
...
@@ -2351,6 +2353,23 @@ LEAF(ProfileInvoke, Instruction)
virtual
void
state_values_do
(
ValueVisitor
*
);
}
;
LEAF
(
MemBar
,
Instruction
)
private
:
LIR_Code
_code
;
public
:
MemBar
(
LIR_Code
code
)
:
Instruction
(
voidType
)
,
_code
(
code
)
{
pin
();
}
LIR_Code
code
()
{
return
_code
;
}
virtual
void
input_values_do
(
ValueVisitor
*
)
{}
}
;
class
BlockPair
:
public
CompilationResourceObj
{
private:
BlockBegin
*
_from
;
...
...
src/share/vm/c1/c1_InstructionPrinter.cpp
浏览文件 @
ab6a43b7
...
...
@@ -855,4 +855,20 @@ void InstructionPrinter::do_RuntimeCall(RuntimeCall* x) {
output
()
->
put
(
')'
);
}
void
InstructionPrinter
::
do_MemBar
(
MemBar
*
x
)
{
if
(
os
::
is_MP
())
{
LIR_Code
code
=
x
->
code
();
switch
(
code
)
{
case
lir_membar_acquire
:
output
()
->
print
(
"membar_acquire"
);
break
;
case
lir_membar_release
:
output
()
->
print
(
"membar_release"
);
break
;
case
lir_membar
:
output
()
->
print
(
"membar"
);
break
;
case
lir_membar_loadload
:
output
()
->
print
(
"membar_loadload"
);
break
;
case
lir_membar_storestore
:
output
()
->
print
(
"membar_storestore"
);
break
;
case
lir_membar_loadstore
:
output
()
->
print
(
"membar_loadstore"
);
break
;
case
lir_membar_storeload
:
output
()
->
print
(
"membar_storeload"
);
break
;
default
:
ShouldNotReachHere
();
break
;
}
}
}
#endif // PRODUCT
src/share/vm/c1/c1_InstructionPrinter.hpp
浏览文件 @
ab6a43b7
...
...
@@ -132,6 +132,7 @@ class InstructionPrinter: public InstructionVisitor {
virtual
void
do_ProfileCall
(
ProfileCall
*
x
);
virtual
void
do_ProfileInvoke
(
ProfileInvoke
*
x
);
virtual
void
do_RuntimeCall
(
RuntimeCall
*
x
);
virtual
void
do_MemBar
(
MemBar
*
x
);
};
#endif // PRODUCT
...
...
src/share/vm/c1/c1_LIR.cpp
浏览文件 @
ab6a43b7
...
...
@@ -464,6 +464,10 @@ void LIR_OpVisitState::visit(LIR_Op* op) {
case
lir_membar
:
// result and info always invalid
case
lir_membar_acquire
:
// result and info always invalid
case
lir_membar_release
:
// result and info always invalid
case
lir_membar_loadload
:
// result and info always invalid
case
lir_membar_storestore
:
// result and info always invalid
case
lir_membar_loadstore
:
// result and info always invalid
case
lir_membar_storeload
:
// result and info always invalid
{
assert
(
op
->
as_Op0
()
!=
NULL
,
"must be"
);
assert
(
op
->
_info
==
NULL
,
"info not used by this instruction"
);
...
...
@@ -1607,6 +1611,10 @@ const char * LIR_Op::name() const {
case
lir_membar
:
s
=
"membar"
;
break
;
case
lir_membar_acquire
:
s
=
"membar_acquire"
;
break
;
case
lir_membar_release
:
s
=
"membar_release"
;
break
;
case
lir_membar_loadload
:
s
=
"membar_loadload"
;
break
;
case
lir_membar_storestore
:
s
=
"membar_storestore"
;
break
;
case
lir_membar_loadstore
:
s
=
"membar_loadstore"
;
break
;
case
lir_membar_storeload
:
s
=
"membar_storeload"
;
break
;
case
lir_word_align
:
s
=
"word_align"
;
break
;
case
lir_label
:
s
=
"label"
;
break
;
case
lir_nop
:
s
=
"nop"
;
break
;
...
...
src/share/vm/c1/c1_LIR.hpp
浏览文件 @
ab6a43b7
...
...
@@ -866,6 +866,10 @@ enum LIR_Code {
,
lir_membar
,
lir_membar_acquire
,
lir_membar_release
,
lir_membar_loadload
,
lir_membar_storestore
,
lir_membar_loadstore
,
lir_membar_storeload
,
lir_get_thread
,
end_op0
,
begin_op1
...
...
@@ -1918,6 +1922,10 @@ class LIR_List: public CompilationResourceObj {
void
membar
()
{
append
(
new
LIR_Op0
(
lir_membar
));
}
void
membar_acquire
()
{
append
(
new
LIR_Op0
(
lir_membar_acquire
));
}
void
membar_release
()
{
append
(
new
LIR_Op0
(
lir_membar_release
));
}
void
membar_loadload
()
{
append
(
new
LIR_Op0
(
lir_membar_loadload
));
}
void
membar_storestore
()
{
append
(
new
LIR_Op0
(
lir_membar_storestore
));
}
void
membar_loadstore
()
{
append
(
new
LIR_Op0
(
lir_membar_loadstore
));
}
void
membar_storeload
()
{
append
(
new
LIR_Op0
(
lir_membar_storeload
));
}
void
nop
()
{
append
(
new
LIR_Op0
(
lir_nop
));
}
void
build_frame
()
{
append
(
new
LIR_Op0
(
lir_build_frame
));
}
...
...
src/share/vm/c1/c1_LIRAssembler.cpp
浏览文件 @
ab6a43b7
...
...
@@ -664,6 +664,22 @@ void LIR_Assembler::emit_op0(LIR_Op0* op) {
membar_release
();
break
;
case
lir_membar_loadload
:
membar_loadload
();
break
;
case
lir_membar_storestore
:
membar_storestore
();
break
;
case
lir_membar_loadstore
:
membar_loadstore
();
break
;
case
lir_membar_storeload
:
membar_storeload
();
break
;
case
lir_get_thread
:
get_thread
(
op
->
result_opr
());
break
;
...
...
src/share/vm/c1/c1_LIRAssembler.hpp
浏览文件 @
ab6a43b7
...
...
@@ -241,6 +241,10 @@ class LIR_Assembler: public CompilationResourceObj {
void
membar
();
void
membar_acquire
();
void
membar_release
();
void
membar_loadload
();
void
membar_storestore
();
void
membar_loadstore
();
void
membar_storeload
();
void
get_thread
(
LIR_Opr
result
);
void
verify_oop_map
(
CodeEmitInfo
*
info
);
...
...
src/share/vm/c1/c1_LIRGenerator.cpp
浏览文件 @
ab6a43b7
...
...
@@ -3165,3 +3165,20 @@ LIR_Opr LIRGenerator::call_runtime(BasicTypeArray* signature, LIRItemList* args,
}
return
result
;
}
void
LIRGenerator
::
do_MemBar
(
MemBar
*
x
)
{
if
(
os
::
is_MP
())
{
LIR_Code
code
=
x
->
code
();
switch
(
code
)
{
case
lir_membar_acquire
:
__
membar_acquire
();
break
;
case
lir_membar_release
:
__
membar_release
();
break
;
case
lir_membar
:
__
membar
();
break
;
case
lir_membar_loadload
:
__
membar_loadload
();
break
;
case
lir_membar_storestore
:
__
membar_storestore
();
break
;
case
lir_membar_loadstore
:
__
membar_loadstore
();
break
;
case
lir_membar_storeload
:
__
membar_storeload
();
break
;
default
:
ShouldNotReachHere
();
break
;
}
}
}
src/share/vm/c1/c1_LIRGenerator.hpp
浏览文件 @
ab6a43b7
...
...
@@ -525,6 +525,7 @@ class LIRGenerator: public InstructionVisitor, public BlockClosure {
virtual
void
do_ProfileCall
(
ProfileCall
*
x
);
virtual
void
do_ProfileInvoke
(
ProfileInvoke
*
x
);
virtual
void
do_RuntimeCall
(
RuntimeCall
*
x
);
virtual
void
do_MemBar
(
MemBar
*
x
);
};
...
...
src/share/vm/c1/c1_Optimizer.cpp
浏览文件 @
ab6a43b7
...
...
@@ -509,6 +509,7 @@ public:
void
do_ProfileCall
(
ProfileCall
*
x
);
void
do_ProfileInvoke
(
ProfileInvoke
*
x
);
void
do_RuntimeCall
(
RuntimeCall
*
x
);
void
do_MemBar
(
MemBar
*
x
);
};
...
...
@@ -678,6 +679,7 @@ void NullCheckVisitor::do_UnsafePrefetchWrite(UnsafePrefetchWrite* x) {}
void
NullCheckVisitor
::
do_ProfileCall
(
ProfileCall
*
x
)
{
nce
()
->
clear_last_explicit_null_check
();
}
void
NullCheckVisitor
::
do_ProfileInvoke
(
ProfileInvoke
*
x
)
{}
void
NullCheckVisitor
::
do_RuntimeCall
(
RuntimeCall
*
x
)
{}
void
NullCheckVisitor
::
do_MemBar
(
MemBar
*
x
)
{}
void
NullCheckEliminator
::
visit
(
Value
*
p
)
{
...
...
src/share/vm/c1/c1_ValueMap.hpp
浏览文件 @
ab6a43b7
...
...
@@ -200,6 +200,7 @@ class ValueNumberingVisitor: public InstructionVisitor {
void
do_ProfileCall
(
ProfileCall
*
x
)
{
/* nothing to do */
}
void
do_ProfileInvoke
(
ProfileInvoke
*
x
)
{
/* nothing to do */
};
void
do_RuntimeCall
(
RuntimeCall
*
x
)
{
/* nothing to do */
};
void
do_MemBar
(
MemBar
*
x
)
{
/* nothing to do */
};
};
...
...
src/share/vm/utilities/globalDefinitions_gcc.hpp
浏览文件 @
ab6a43b7
/*
* Copyright (c) 1998, 201
1
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 201
2
, 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
...
...
@@ -87,14 +87,7 @@
#endif
#ifdef __APPLE__
#include <AvailabilityMacros.h>
#if (MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4)
// Mac OS X 10.4 defines EFL_AC and EFL_ID,
// which conflict with hotspot variable names.
//
// This has been fixed in Mac OS X 10.5.
#undef EFL_AC
#undef EFL_ID
#endif
#include <mach/mach.h>
#endif
#include <sys/time.h>
#endif // LINUX || _ALLBSD_SOURCE
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录