Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
4cc17396
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
4cc17396
编写于
8月 09, 2013
作者:
D
dcubed
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
cf130033
1801b347
变更
26
显示空白变更内容
内联
并排
Showing
26 changed file
with
404 addition
and
107 deletion
+404
-107
make/solaris/makefiles/dtrace.make
make/solaris/makefiles/dtrace.make
+17
-3
make/windows/create.bat
make/windows/create.bat
+3
-3
make/windows/create_obj_files.sh
make/windows/create_obj_files.sh
+18
-14
make/windows/makefiles/projectcreator.make
make/windows/makefiles/projectcreator.make
+6
-14
make/windows/makefiles/trace.make
make/windows/makefiles/trace.make
+5
-5
make/windows/makefiles/vm.make
make/windows/makefiles/vm.make
+0
-4
src/cpu/sparc/vm/templateInterpreter_sparc.cpp
src/cpu/sparc/vm/templateInterpreter_sparc.cpp
+21
-0
src/cpu/x86/vm/templateInterpreter_x86_32.cpp
src/cpu/x86/vm/templateInterpreter_x86_32.cpp
+23
-0
src/cpu/x86/vm/templateInterpreter_x86_64.cpp
src/cpu/x86/vm/templateInterpreter_x86_64.cpp
+23
-0
src/cpu/zero/vm/entryFrame_zero.hpp
src/cpu/zero/vm/entryFrame_zero.hpp
+2
-2
src/cpu/zero/vm/frame_zero.inline.hpp
src/cpu/zero/vm/frame_zero.inline.hpp
+1
-1
src/cpu/zero/vm/stubGenerator_zero.cpp
src/cpu/zero/vm/stubGenerator_zero.cpp
+22
-0
src/os/bsd/vm/attachListener_bsd.cpp
src/os/bsd/vm/attachListener_bsd.cpp
+2
-2
src/os_cpu/linux_zero/vm/os_linux_zero.cpp
src/os_cpu/linux_zero/vm/os_linux_zero.cpp
+0
-10
src/share/tools/ProjectCreator/BuildConfig.java
src/share/tools/ProjectCreator/BuildConfig.java
+75
-30
src/share/tools/ProjectCreator/FileTreeCreatorVC10.java
src/share/tools/ProjectCreator/FileTreeCreatorVC10.java
+53
-5
src/share/tools/ProjectCreator/ProjectCreator.java
src/share/tools/ProjectCreator/ProjectCreator.java
+6
-1
src/share/tools/ProjectCreator/WinGammaPlatform.java
src/share/tools/ProjectCreator/WinGammaPlatform.java
+20
-5
src/share/tools/ProjectCreator/WinGammaPlatformVC10.java
src/share/tools/ProjectCreator/WinGammaPlatformVC10.java
+26
-2
src/share/vm/classfile/javaClasses.cpp
src/share/vm/classfile/javaClasses.cpp
+21
-0
src/share/vm/classfile/javaClasses.hpp
src/share/vm/classfile/javaClasses.hpp
+26
-0
src/share/vm/classfile/systemDictionary.hpp
src/share/vm/classfile/systemDictionary.hpp
+1
-0
src/share/vm/classfile/vmSymbols.hpp
src/share/vm/classfile/vmSymbols.hpp
+2
-0
src/share/vm/interpreter/interpreterRuntime.cpp
src/share/vm/interpreter/interpreterRuntime.cpp
+23
-0
src/share/vm/interpreter/interpreterRuntime.hpp
src/share/vm/interpreter/interpreterRuntime.hpp
+3
-0
test/runtime/7107135/Test7107135.sh
test/runtime/7107135/Test7107135.sh
+5
-6
未找到文件。
make/solaris/makefiles/dtrace.make
浏览文件 @
4cc17396
...
...
@@ -283,8 +283,8 @@ $(DTRACE.o): $(DTRACE).d $(JVMOFFS).h $(JVMOFFS)Index.h $(DTraced_Files)
$(QUIETLY)
$(DTRACE_PROG)
$(DTRACE_OPTS)
-C
-I.
-G
-xlazyload
-o
$@
-s
$(DTRACE).d
\
$(DTraced_Files)
||\
STATUS
=
$$
?
;
\
if
[
x
"
$$
STATUS"
=
x
"1"
-a
\
x
`
uname
-r
`
=
x
"5.10"
-a
\
if
[
x
"
$$
STATUS"
=
x
"1"
]
;
then
\
if
[
x
`
uname
-r
`
=
x
"5.10"
-a
\
x
`
uname
-p
`
=
x
"sparc"
]
;
then
\
echo
"*****************************************************************"
;
\
echo
"* If you are building server compiler, and the error message is "
;
\
...
...
@@ -294,6 +294,20 @@ $(DTRACE.o): $(DTRACE).d $(JVMOFFS).h $(JVMOFFS)Index.h $(DTraced_Files)
echo
"* environment variable HOTSPOT_DISABLE_DTRACE_PROBES to disable "
;
\
echo
"* dtrace probes for this build."
;
\
echo
"*****************************************************************"
;
\
elif
[
x
`
uname
-r
`
=
x
"5.10"
]
;
then
\
echo
"*****************************************************************"
;
\
echo
"* If you are seeing 'syntax error near
\"
umpiconninfo_t
\"
' on Solaris"
;
\
echo
"* 10, try doing 'cd /usr/lib/dtrace && gzip mpi.d' as root, "
;
\
echo
"* or set the environment variable HOTSPOT_DISABLE_DTRACE_PROBES"
;
\
echo
"* to disable dtrace probes for this build."
;
\
echo
"*****************************************************************"
;
\
else
\
echo
"*****************************************************************"
;
\
echo
"* If you cannot fix dtrace build issues, try to "
;
\
echo
"* set the environment variable HOTSPOT_DISABLE_DTRACE_PROBES"
;
\
echo
"* to disable dtrace probes for this build."
;
\
echo
"*****************************************************************"
;
\
fi
;
\
fi
;
\
exit
$$
STATUS
# Since some DTraced_Files are in LIBJVM.o and they are touched by this
...
...
make/windows/create.bat
浏览文件 @
4cc17396
@echo
off
REM
REM Copyright (c) 1999, 201
1
, Oracle and/or its affiliates. All rights reserved.
REM Copyright (c) 1999, 201
3
, Oracle and/or its affiliates. All rights reserved.
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
REM
REM This code is free software; you can redistribute it and/or modify it
...
...
@@ -148,7 +148,7 @@ echo HotSpotJDKDist=%HotSpotJDKDist%
REM This is now safe to do.
:copyfiles
for
/D
%%i
in
(
compiler1
,
compiler2
,
tiered
,
core
)
do
(
for
/D
%%i
in
(
compiler1
,
compiler2
,
tiered
)
do
(
if
NOT
EXIST
%HotSpotBuildSpace%
\
%%i
\generated
mkdir
%HotSpotBuildSpace%
\
%%i
\generated
copy
%HotSpotWorkSpace%
\make\windows\projectfiles\
%%i
\
*
%HotSpotBuildSpace%
\
%%i
\generated
>
NUL
)
...
...
@@ -156,7 +156,7 @@ copy %HotSpotWorkSpace%\make\windows\projectfiles\%%i\* %HotSpotBuildSpace%\%%i\
REM force regneration of ProjectFile
if
exist
%ProjectFile%
del
%ProjectFile%
for
/D
%%i
in
(
compiler1
,
compiler2
,
tiered
,
core
)
do
(
for
/D
%%i
in
(
compiler1
,
compiler2
,
tiered
)
do
(
echo
--
%%i
--
echo
#
Generated
file
!
>
%HotSpotBuildSpace%
\
%%i
\local.make
echo
#
Changing
a
variable
below
and
then
deleting
%ProjectFile%
will
cause
>>
%HotSpotBuildSpace%
\
%%i
\local.make
...
...
make/windows/create_obj_files.sh
浏览文件 @
4cc17396
...
...
@@ -73,19 +73,17 @@ done
BASE_PATHS
=
"
${
BASE_PATHS
}
${
GENERATED
}
/jvmtifiles
${
GENERATED
}
/tracefiles"
if
[
-d
"
${
ALTSRC
}
/share/vm/jfr"
]
;
then
BASE_PATHS
=
"
${
BASE_PATHS
}
${
ALTSRC
}
/share/vm/jfr"
if
[
-d
"
${
ALTSRC
}
/share/vm/jfr/buffers"
]
;
then
BASE_PATHS
=
"
${
BASE_PATHS
}
${
ALTSRC
}
/share/vm/jfr/buffers"
fi
BASE_PATHS
=
"
${
BASE_PATHS
}
${
COMMONSRC
}
/share/vm/prims/wbtestmethods"
CORE_PATHS
=
"
${
BASE_PATHS
}
"
# shared is already in BASE_PATHS. Should add vm/memory but that one is also in BASE_PATHS.
if
[
-d
"
${
ALTSRC
}
/share/vm/gc_implementation"
]
;
then
CORE_PATHS
=
"
${
COR
E_PATHS
}
`
$FIND
${
ALTSRC
}
/share/vm/gc_implementation
!
-name
gc_implementation
-prune
-type
d
\!
-name
shared
`
"
BASE_PATHS
=
"
${
BAS
E_PATHS
}
`
$FIND
${
ALTSRC
}
/share/vm/gc_implementation
!
-name
gc_implementation
-prune
-type
d
\!
-name
shared
`
"
fi
CORE_PATHS
=
"
${
COR
E_PATHS
}
`
$FIND
${
COMMONSRC
}
/share/vm/gc_implementation
!
-name
gc_implementation
-prune
-type
d
\!
-name
shared
`
"
BASE_PATHS
=
"
${
BAS
E_PATHS
}
`
$FIND
${
COMMONSRC
}
/share/vm/gc_implementation
!
-name
gc_implementation
-prune
-type
d
\!
-name
shared
`
"
if
[
-d
"
${
ALTSRC
}
/share/vm/c1"
]
;
then
COMPILER1_PATHS
=
"
${
ALTSRC
}
/share/vm/c1"
...
...
@@ -104,12 +102,11 @@ COMPILER2_PATHS="${COMPILER2_PATHS} ${GENERATED}/adfiles"
# Include dirs per type.
case
"
${
TYPE
}
"
in
"core"
)
Src_Dirs
=
"
${
CORE_PATHS
}
"
;;
"compiler1"
)
Src_Dirs
=
"
${
CORE_PATHS
}
${
COMPILER1_PATHS
}
"
;;
"compiler2"
)
Src_Dirs
=
"
${
CORE_PATHS
}
${
COMPILER2_PATHS
}
"
;;
"tiered"
)
Src_Dirs
=
"
${
CORE_PATHS
}
${
COMPILER1_PATHS
}
${
COMPILER2_PATHS
}
"
;;
"zero"
)
Src_Dirs
=
"
${
CORE_PATHS
}
"
;;
"shark"
)
Src_Dirs
=
"
${
CORE_PATHS
}
"
;;
"compiler1"
)
Src_Dirs
=
"
${
BASE_PATHS
}
${
COMPILER1_PATHS
}
"
;;
"compiler2"
)
Src_Dirs
=
"
${
BASE_PATHS
}
${
COMPILER2_PATHS
}
"
;;
"tiered"
)
Src_Dirs
=
"
${
BASE_PATHS
}
${
COMPILER1_PATHS
}
${
COMPILER2_PATHS
}
"
;;
"zero"
)
Src_Dirs
=
"
${
BASE_PATHS
}
"
;;
"shark"
)
Src_Dirs
=
"
${
BASE_PATHS
}
"
;;
esac
COMPILER2_SPECIFIC_FILES
=
"opto libadt bcEscapeAnalyzer.cpp c2_* runtime_*"
...
...
@@ -122,7 +119,6 @@ Src_Files_EXCLUDE="jsig.c jvmtiEnvRecommended.cpp jvmtiEnvStub.cpp"
# Exclude per type.
case
"
${
TYPE
}
"
in
"core"
)
Src_Files_EXCLUDE
=
"
${
Src_Files_EXCLUDE
}
${
COMPILER1_SPECIFIC_FILES
}
${
COMPILER2_SPECIFIC_FILES
}
${
ZERO_SPECIFIC_FILES
}
${
SHARK_SPECIFIC_FILES
}
ciTypeFlow.cpp"
;;
"compiler1"
)
Src_Files_EXCLUDE
=
"
${
Src_Files_EXCLUDE
}
${
COMPILER2_SPECIFIC_FILES
}
${
ZERO_SPECIFIC_FILES
}
${
SHARK_SPECIFIC_FILES
}
ciTypeFlow.cpp"
;;
"compiler2"
)
Src_Files_EXCLUDE
=
"
${
Src_Files_EXCLUDE
}
${
COMPILER1_SPECIFIC_FILES
}
${
ZERO_SPECIFIC_FILES
}
${
SHARK_SPECIFIC_FILES
}
"
;;
"tiered"
)
Src_Files_EXCLUDE
=
"
${
Src_Files_EXCLUDE
}
${
ZERO_SPECIFIC_FILES
}
${
SHARK_SPECIFIC_FILES
}
"
;;
...
...
@@ -149,9 +145,17 @@ for e in ${Src_Dirs}; do
Src_Files
=
"
${
Src_Files
}
`
findsrc
${
e
}
`
"
done
Obj_Files
=
Obj_Files
=
" "
for
e
in
${
Src_Files
}
;
do
Obj_Files
=
"
${
Obj_Files
}${
e
%\.[!.]*
}
.obj "
o
=
"
${
e
%\.[!.]*
}
.obj"
set
+e
chk
=
`
expr
"
${
Obj_Files
}
"
:
".*
$o
"
`
set
-e
if
[
"
$chk
"
!=
0
]
;
then
echo
"# INFO: skipping duplicate
$o
"
continue
fi
Obj_Files
=
"
${
Obj_Files
}
$o
"
done
echo
Obj_Files
=
${
Obj_Files
}
make/windows/makefiles/projectcreator.make
浏览文件 @
4cc17396
...
...
@@ -44,10 +44,11 @@ ProjectCreatorSources=\
# This is only used internally
ProjectCreatorIncludesPRIVATE
=
\
-relativeInclude
src
\c
losed
\s
hare
\v
m
\
-relativeInclude
src
\c
losed
\o
s
\w
indows
\v
m
\
-relativeInclude
src
\c
losed
\o
s_cpu
\w
indows_
$(Platform_arch)
\v
m
\
-relativeInclude
src
\c
losed
\c
pu
\$
(
Platform_arch
)
\v
m
\
-relativeAltSrcInclude
src
\c
losed
\
-altRelativeInclude
share
\v
m
\
-altRelativeInclude
os
\w
indows
\v
m
\
-altRelativeInclude
os_cpu
\w
indows_
$(Platform_arch)
\v
m
\
-altRelativeInclude
cpu
\$
(
Platform_arch
)
\v
m
\
-relativeInclude
src
\s
hare
\v
m
\
-relativeInclude
src
\s
hare
\v
m
\p
recompiled
\
-relativeInclude
src
\s
hare
\v
m
\p
rims
\w
btestmethods
\
...
...
@@ -91,7 +92,7 @@ ProjectCreatorIDEOptions = \
-disablePch
getThread_windows_
$(Platform_arch)
.cpp
\
-disablePch_compiler2
opcodes.cpp
# Common options for the IDE builds for c
ore, c
1, and c2
# Common options for the IDE builds for c1, and c2
ProjectCreatorIDEOptions
=
\
$(ProjectCreatorIDEOptions)
\
-sourceBase
$(HOTSPOTWORKSPACE)
\
...
...
@@ -157,19 +158,11 @@ ProjectCreatorIDEOptionsIgnoreCompiler2=\
-ignoreFile_TARGET
ciTypeFlow.hpp
\
-ignoreFile_TARGET
$(Platform_arch_model)
.ad
##################################################
# Without compiler(core) specific options
##################################################
ProjectCreatorIDEOptions
=
$(ProjectCreatorIDEOptions)
\
$(ProjectCreatorIDEOptionsIgnoreCompiler1:TARGET=core)
\
$(ProjectCreatorIDEOptionsIgnoreCompiler2:TARGET=core)
##################################################
# Client(C1) compiler specific options
##################################################
ProjectCreatorIDEOptions
=
$(ProjectCreatorIDEOptions)
\
-define_compiler1
COMPILER1
\
-ignorePath_compiler1
core
\
$(ProjectCreatorIDEOptionsIgnoreCompiler2:TARGET=compiler1)
##################################################
...
...
@@ -178,7 +171,6 @@ $(ProjectCreatorIDEOptionsIgnoreCompiler2:TARGET=compiler1)
#NOTE! This list must be kept in sync with GENERATED_NAMES in adlc.make.
ProjectCreatorIDEOptions
=
$(ProjectCreatorIDEOptions)
\
-define_compiler2
COMPILER2
\
-ignorePath_compiler2
core
\
-additionalFile_compiler2
$(Platform_arch_model)
.ad
\
-additionalFile_compiler2
ad_
$(Platform_arch_model)
.cpp
\
-additionalFile_compiler2
ad_
$(Platform_arch_model)
.hpp
\
...
...
make/windows/makefiles/trace.make
浏览文件 @
4cc17396
...
...
@@ -90,25 +90,25 @@ $(TraceOutDir)/traceTypes.hpp: $(TraceSrcDir)/trace.xml $(TraceSrcDir)/traceType
!if
"$(OPENJDK)"
==
"true"
$(TraceOutDir)/traceEventClasses.hpp
:
$(TraceSrcDir)/trace.xml $(TraceSrcDir)/traceEventClasses.xsl $(XML_DEPS)
@
echo
Generating
$@
@
echo
Generating
OpenJDK
$@
@
$(XSLT)
-IN
$(TraceSrcDir)
/trace.xml
-XSL
$(TraceSrcDir)
/traceEventClasses.xsl
-OUT
$(TraceOutDir)
/traceEventClasses.hpp
!
else
$(TraceOutDir)/traceEventClasses.hpp
:
$(TraceSrcDir)/trace.xml $(TraceAltSrcDir)/traceEventClasses.xsl $(XML_DEPS)
@
echo
Generating
$@
@
echo
Generating
AltSrc
$@
@
$(XSLT)
-IN
$(TraceSrcDir)
/trace.xml
-XSL
$(TraceAltSrcDir)
/traceEventClasses.xsl
-OUT
$(TraceOutDir)
/traceEventClasses.hpp
$(TraceOutDir)/traceProducer.cpp
:
$(TraceSrcDir)/trace.xml $(TraceAltSrcDir)/traceProducer.xsl $(XML_DEPS)
@
echo
Generating
$@
@
echo
Generating
AltSrc
$@
@
$(XSLT)
-IN
$(TraceSrcDir)
/trace.xml
-XSL
$(TraceAltSrcDir)
/traceProducer.xsl
-OUT
$(TraceOutDir)
/traceProducer.cpp
$(TraceOutDir)/traceRequestables.hpp
:
$(TraceSrcDir)/trace.xml $(TraceAltSrcDir)/traceRequestables.xsl $(XML_DEPS)
@
echo
Generating
$@
@
echo
Generating
AltSrc
$@
@
$(XSLT)
-IN
$(TraceSrcDir)
/trace.xml
-XSL
$(TraceAltSrcDir)
/traceRequestables.xsl
-OUT
$(TraceOutDir)
/traceRequestables.hpp
$(TraceOutDir)/traceEventControl.hpp
:
$(TraceSrcDir)/trace.xml $(TraceAltSrcDir)/traceEventControl.xsl $(XML_DEPS)
@
echo
Generating
$@
@
echo
Generating
AltSrc
$@
@
$(XSLT)
-IN
$(TraceSrcDir)
/trace.xml
-XSL
$(TraceAltSrcDir)
/traceEventControl.xsl
-OUT
$(TraceOutDir)
/traceEventControl.hpp
!
endif
...
...
make/windows/makefiles/vm.make
浏览文件 @
4cc17396
...
...
@@ -36,10 +36,6 @@ CXX_FLAGS=$(CXX_FLAGS) /D "PRODUCT"
CXX_FLAGS
=
$(CXX_FLAGS)
/D
"ASSERT"
!
endif
!if
"$(Variant)"
==
"core"
# No need to define anything, CORE is defined as !COMPILER1 && !COMPILER2
!
endif
!if
"$(Variant)"
==
"compiler1"
CXX_FLAGS
=
$(CXX_FLAGS)
/D
"COMPILER1"
!
endif
...
...
src/cpu/sparc/vm/templateInterpreter_sparc.cpp
浏览文件 @
4cc17396
...
...
@@ -1887,6 +1887,27 @@ void TemplateInterpreterGenerator::generate_throw_exception() {
if
(
ProfileInterpreter
)
{
__
set_method_data_pointer_for_bcp
();
}
#if INCLUDE_JVMTI
if
(
EnableInvokeDynamic
)
{
Label
L_done
;
__
ldub
(
Address
(
Lbcp
,
0
),
G1_scratch
);
// Load current bytecode
__
cmp_and_br_short
(
G1_scratch
,
Bytecodes
::
_invokestatic
,
Assembler
::
notEqual
,
Assembler
::
pn
,
L_done
);
// The member name argument must be restored if _invokestatic is re-executed after a PopFrame call.
// Detect such a case in the InterpreterRuntime function and return the member name argument, or NULL.
__
call_VM
(
G1_scratch
,
CAST_FROM_FN_PTR
(
address
,
InterpreterRuntime
::
member_name_arg_or_null
),
I0
,
Lmethod
,
Lbcp
);
__
br_null
(
G1_scratch
,
false
,
Assembler
::
pn
,
L_done
);
__
delayed
()
->
nop
();
__
st_ptr
(
G1_scratch
,
Lesp
,
wordSize
);
__
bind
(
L_done
);
}
#endif // INCLUDE_JVMTI
// Resume bytecode interpretation at the current bcp
__
dispatch_next
(
vtos
);
// end of JVMTI PopFrame support
...
...
src/cpu/x86/vm/templateInterpreter_x86_32.cpp
浏览文件 @
4cc17396
...
...
@@ -1920,6 +1920,29 @@ void TemplateInterpreterGenerator::generate_throw_exception() {
__
get_thread
(
thread
);
__
movl
(
Address
(
thread
,
JavaThread
::
popframe_condition_offset
()),
JavaThread
::
popframe_inactive
);
#if INCLUDE_JVMTI
if
(
EnableInvokeDynamic
)
{
Label
L_done
;
const
Register
local0
=
rdi
;
__
cmpb
(
Address
(
rsi
,
0
),
Bytecodes
::
_invokestatic
);
__
jcc
(
Assembler
::
notEqual
,
L_done
);
// The member name argument must be restored if _invokestatic is re-executed after a PopFrame call.
// Detect such a case in the InterpreterRuntime function and return the member name argument, or NULL.
__
get_method
(
rdx
);
__
movptr
(
rax
,
Address
(
local0
,
0
));
__
call_VM
(
rax
,
CAST_FROM_FN_PTR
(
address
,
InterpreterRuntime
::
member_name_arg_or_null
),
rax
,
rdx
,
rsi
);
__
testptr
(
rax
,
rax
);
__
jcc
(
Assembler
::
zero
,
L_done
);
__
movptr
(
Address
(
rbx
,
0
),
rax
);
__
bind
(
L_done
);
}
#endif // INCLUDE_JVMTI
__
dispatch_next
(
vtos
);
// end of PopFrame support
...
...
src/cpu/x86/vm/templateInterpreter_x86_64.cpp
浏览文件 @
4cc17396
...
...
@@ -1929,6 +1929,29 @@ void TemplateInterpreterGenerator::generate_throw_exception() {
__
movl
(
Address
(
r15_thread
,
JavaThread
::
popframe_condition_offset
()),
JavaThread
::
popframe_inactive
);
#if INCLUDE_JVMTI
if
(
EnableInvokeDynamic
)
{
Label
L_done
;
const
Register
local0
=
r14
;
__
cmpb
(
Address
(
r13
,
0
),
Bytecodes
::
_invokestatic
);
__
jcc
(
Assembler
::
notEqual
,
L_done
);
// The member name argument must be restored if _invokestatic is re-executed after a PopFrame call.
// Detect such a case in the InterpreterRuntime function and return the member name argument, or NULL.
__
get_method
(
rdx
);
__
movptr
(
rax
,
Address
(
local0
,
0
));
__
call_VM
(
rax
,
CAST_FROM_FN_PTR
(
address
,
InterpreterRuntime
::
member_name_arg_or_null
),
rax
,
rdx
,
r13
);
__
testptr
(
rax
,
rax
);
__
jcc
(
Assembler
::
zero
,
L_done
);
__
movptr
(
Address
(
rbx
,
0
),
rax
);
__
bind
(
L_done
);
}
#endif // INCLUDE_JVMTI
__
dispatch_next
(
vtos
);
// end of PopFrame support
...
...
src/cpu/zero/vm/entryFrame_zero.hpp
浏览文件 @
4cc17396
...
...
@@ -58,8 +58,8 @@ class EntryFrame : public ZeroFrame {
JavaCallWrapper
*
call_wrapper
,
TRAPS
);
public:
JavaCallWrapper
*
call_wrapper
()
const
{
return
(
JavaCallWrapper
*
)
value
_of_word
(
call_wrapper_off
);
JavaCallWrapper
*
*
call_wrapper
()
const
{
return
(
JavaCallWrapper
*
*
)
addr
_of_word
(
call_wrapper_off
);
}
public:
...
...
src/cpu/zero/vm/frame_zero.inline.hpp
浏览文件 @
4cc17396
...
...
@@ -141,7 +141,7 @@ inline intptr_t* frame::id() const {
return
fp
();
}
inline
JavaCallWrapper
*
frame
::
entry_frame_call_wrappe
r
()
const
{
inline
JavaCallWrapper
*
*
frame
::
entry_frame_call_wrapper_add
r
()
const
{
return
zero_entryframe
()
->
call_wrapper
();
}
...
...
src/cpu/zero/vm/stubGenerator_zero.cpp
浏览文件 @
4cc17396
...
...
@@ -176,6 +176,19 @@ class StubGenerator: public StubCodeGenerator {
StubRoutines
::
_oop_arraycopy
;
}
static
int
SafeFetch32
(
int
*
adr
,
int
errValue
)
{
int
value
=
errValue
;
value
=
*
adr
;
return
value
;
}
static
intptr_t
SafeFetchN
(
intptr_t
*
adr
,
intptr_t
errValue
)
{
intptr_t
value
=
errValue
;
value
=
*
adr
;
return
value
;
}
void
generate_initial
()
{
// Generates all stubs and initializes the entry points
...
...
@@ -225,6 +238,15 @@ class StubGenerator: public StubCodeGenerator {
// arraycopy stubs used by compilers
generate_arraycopy_stubs
();
// Safefetch stubs.
StubRoutines
::
_safefetch32_entry
=
CAST_FROM_FN_PTR
(
address
,
StubGenerator
::
SafeFetch32
);
StubRoutines
::
_safefetch32_fault_pc
=
NULL
;
StubRoutines
::
_safefetch32_continuation_pc
=
NULL
;
StubRoutines
::
_safefetchN_entry
=
CAST_FROM_FN_PTR
(
address
,
StubGenerator
::
SafeFetchN
);
StubRoutines
::
_safefetchN_fault_pc
=
NULL
;
StubRoutines
::
_safefetchN_continuation_pc
=
NULL
;
}
public:
...
...
src/os/bsd/vm/attachListener_bsd.cpp
浏览文件 @
4cc17396
...
...
@@ -445,14 +445,14 @@ AttachOperation* AttachListener::dequeue() {
void
AttachListener
::
vm_start
()
{
char
fn
[
UNIX_PATH_MAX
];
struct
stat
64
st
;
struct
stat
st
;
int
ret
;
int
n
=
snprintf
(
fn
,
UNIX_PATH_MAX
,
"%s/.java_pid%d"
,
os
::
get_temp_directory
(),
os
::
current_process_id
());
assert
(
n
<
(
int
)
UNIX_PATH_MAX
,
"java_pid file name buffer overflow"
);
RESTARTABLE
(
::
stat
64
(
fn
,
&
st
),
ret
);
RESTARTABLE
(
::
stat
(
fn
,
&
st
),
ret
);
if
(
ret
==
0
)
{
ret
=
::
unlink
(
fn
);
if
(
ret
==
-
1
)
{
...
...
src/os_cpu/linux_zero/vm/os_linux_zero.cpp
浏览文件 @
4cc17396
...
...
@@ -410,16 +410,6 @@ extern "C" {
int
SpinPause
()
{
}
int
SafeFetch32
(
int
*
adr
,
int
errValue
)
{
int
value
=
errValue
;
value
=
*
adr
;
return
value
;
}
intptr_t
SafeFetchN
(
intptr_t
*
adr
,
intptr_t
errValue
)
{
intptr_t
value
=
errValue
;
value
=
*
adr
;
return
value
;
}
void
_Copy_conjoint_jshorts_atomic
(
jshort
*
from
,
jshort
*
to
,
size_t
count
)
{
if
(
from
>
to
)
{
...
...
src/share/tools/ProjectCreator/BuildConfig.java
浏览文件 @
4cc17396
...
...
@@ -142,6 +142,69 @@ class BuildConfig {
return
rv
;
}
// Returns true if the specified path refers to a relative alternate
// source file. RelativeAltSrcInclude is usually "src\closed".
public
static
boolean
matchesRelativeAltSrcInclude
(
String
path
)
{
String
relativeAltSrcInclude
=
getFieldString
(
null
,
"RelativeAltSrcInclude"
);
Vector
<
String
>
v
=
getFieldVector
(
null
,
"AltRelativeInclude"
);
for
(
String
pathPart
:
v
)
{
if
(
path
.
contains
(
relativeAltSrcInclude
+
Util
.
sep
+
pathPart
))
{
return
true
;
}
}
return
false
;
}
// Returns the relative alternate source file for the specified path.
// Null is returned if the specified path does not have a matching
// alternate source file.
public
static
String
getMatchingRelativeAltSrcFile
(
String
path
)
{
Vector
<
String
>
v
=
getFieldVector
(
null
,
"RelativeAltSrcFileList"
);
if
(
v
==
null
)
{
return
null
;
}
for
(
String
pathPart
:
v
)
{
if
(
path
.
endsWith
(
pathPart
))
{
String
relativeAltSrcInclude
=
getFieldString
(
null
,
"RelativeAltSrcInclude"
);
return
relativeAltSrcInclude
+
Util
.
sep
+
pathPart
;
}
}
return
null
;
}
// Returns true if the specified path has a matching alternate
// source file.
public
static
boolean
matchesRelativeAltSrcFile
(
String
path
)
{
return
getMatchingRelativeAltSrcFile
(
path
)
!=
null
;
}
// Track the specified alternate source file. The source file is
// tracked without the leading .*<sep><RelativeAltSrcFileList><sep>
// part to make matching regular source files easier.
public
static
void
trackRelativeAltSrcFile
(
String
path
)
{
String
pattern
=
getFieldString
(
null
,
"RelativeAltSrcInclude"
)
+
Util
.
sep
;
int
altSrcInd
=
path
.
indexOf
(
pattern
);
if
(
altSrcInd
==
-
1
)
{
// not an AltSrc path
return
;
}
altSrcInd
+=
pattern
.
length
();
if
(
altSrcInd
>=
path
.
length
())
{
// not a valid AltSrc path
return
;
}
String
altSrcFile
=
path
.
substring
(
altSrcInd
);
Vector
v
=
getFieldVector
(
null
,
"RelativeAltSrcFileList"
);
if
(
v
==
null
||
!
v
.
contains
(
altSrcFile
))
{
addFieldVector
(
null
,
"RelativeAltSrcFileList"
,
altSrcFile
);
}
}
void
addTo
(
Hashtable
ht
,
String
key
,
String
value
)
{
ht
.
put
(
expandFormat
(
key
),
expandFormat
(
value
));
}
...
...
@@ -272,8 +335,19 @@ class BuildConfig {
private
Vector
getSourceIncludes
()
{
Vector
<
String
>
rv
=
new
Vector
<
String
>();
Vector
<
String
>
ri
=
new
Vector
<
String
>();
String
sourceBase
=
getFieldString
(
null
,
"SourceBase"
);
// add relative alternate source include values:
String
relativeAltSrcInclude
=
getFieldString
(
null
,
"RelativeAltSrcInclude"
);
Vector
<
String
>
asri
=
new
Vector
<
String
>();
collectRelevantVectors
(
asri
,
"AltRelativeInclude"
);
for
(
String
f
:
asri
)
{
rv
.
add
(
sourceBase
+
Util
.
sep
+
relativeAltSrcInclude
+
Util
.
sep
+
f
);
}
Vector
<
String
>
ri
=
new
Vector
<
String
>();
collectRelevantVectors
(
ri
,
"RelativeInclude"
);
for
(
String
f
:
ri
)
{
rv
.
add
(
sourceBase
+
Util
.
sep
+
f
);
...
...
@@ -541,35 +615,6 @@ class TieredProductConfig extends ProductConfig {
}
}
class
CoreDebugConfig
extends
GenericDebugNonKernelConfig
{
String
getOptFlag
()
{
return
getCI
().
getNoOptFlag
();
}
CoreDebugConfig
()
{
initNames
(
"core"
,
"debug"
,
"jvm.dll"
);
init
(
getIncludes
(),
getDefines
());
}
}
class
CoreFastDebugConfig
extends
GenericDebugNonKernelConfig
{
String
getOptFlag
()
{
return
getCI
().
getOptFlag
();
}
CoreFastDebugConfig
()
{
initNames
(
"core"
,
"fastdebug"
,
"jvm.dll"
);
init
(
getIncludes
(),
getDefines
());
}
}
class
CoreProductConfig
extends
ProductConfig
{
CoreProductConfig
()
{
initNames
(
"core"
,
"product"
,
"jvm.dll"
);
init
(
getIncludes
(),
getDefines
());
}
}
abstract
class
CompilerInterface
{
abstract
Vector
getBaseCompilerFlags
(
Vector
defines
,
Vector
includes
,
String
outDir
);
...
...
src/share/tools/ProjectCreator/FileTreeCreatorVC10.java
浏览文件 @
4cc17396
/*
* Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
import
static
java
.
nio
.
file
.
FileVisitResult
.
CONTINUE
;
import
java.io.IOException
;
...
...
@@ -21,6 +45,8 @@ public class FileTreeCreatorVC10 extends FileTreeCreator {
boolean
usePch
=
false
;
boolean
disablePch
=
false
;
boolean
useIgnore
=
false
;
boolean
isAltSrc
=
false
;
// only needed as a debugging crumb
boolean
isReplacedByAltSrc
=
false
;
String
fileName
=
file
.
getFileName
().
toString
();
// TODO hideFile
...
...
@@ -30,6 +56,26 @@ public class FileTreeCreatorVC10 extends FileTreeCreator {
usePch
=
true
;
}
String
fileLoc
=
vcProjLocation
.
relativize
(
file
).
toString
();
// isAltSrc and isReplacedByAltSrc applies to all configs for a file
if
(
BuildConfig
.
matchesRelativeAltSrcInclude
(
file
.
toAbsolutePath
().
toString
()))
{
// current file is an alternate source file so track it
isAltSrc
=
true
;
BuildConfig
.
trackRelativeAltSrcFile
(
file
.
toAbsolutePath
().
toString
());
}
else
if
(
BuildConfig
.
matchesRelativeAltSrcFile
(
file
.
toAbsolutePath
().
toString
()))
{
// current file is a regular file that matches an alternate
// source file so yack about replacing the regular file
isReplacedByAltSrc
=
true
;
System
.
out
.
println
(
"INFO: alternate source file '"
+
BuildConfig
.
getMatchingRelativeAltSrcFile
(
file
.
toAbsolutePath
().
toString
())
+
"' replaces '"
+
fileLoc
+
"'"
);
}
for
(
BuildConfig
cfg
:
allConfigs
)
{
if
(
cfg
.
lookupHashFieldInContext
(
"IgnoreFile"
,
fileName
)
!=
null
)
{
useIgnore
=
true
;
...
...
@@ -58,9 +104,8 @@ public class FileTreeCreatorVC10 extends FileTreeCreator {
}
String
tagName
=
wg
.
getFileTagFromSuffix
(
fileName
);
String
fileLoc
=
vcProjLocation
.
relativize
(
file
).
toString
();
if
(!
useIgnore
&&
!
disablePch
&&
!
usePch
)
{
if
(!
useIgnore
&&
!
disablePch
&&
!
usePch
&&
!
isReplacedByAltSrc
)
{
wg
.
tag
(
tagName
,
new
String
[]
{
"Include"
,
fileLoc
});
}
else
{
wg
.
startTag
(
...
...
@@ -78,6 +123,11 @@ public class FileTreeCreatorVC10 extends FileTreeCreator {
if
(
disablePch
)
{
wg
.
tag
(
"PrecompiledHeader"
,
"Condition"
,
"'$(Configuration)|$(Platform)'=='"
+
cfg
.
get
(
"Name"
)
+
"'"
);
}
if
(
isReplacedByAltSrc
)
{
wg
.
tagData
(
"ExcludedFromBuild"
,
"true"
,
"Condition"
,
"'$(Configuration)|$(Platform)'=='"
+
cfg
.
get
(
"Name"
)
+
"'"
);
}
}
wg
.
endTag
();
}
...
...
@@ -137,6 +187,4 @@ public class FileTreeCreatorVC10 extends FileTreeCreator {
public
void
writeFileTree
()
throws
IOException
{
Files
.
walkFileTree
(
this
.
startDir
,
this
);
}
}
\ No newline at end of file
}
src/share/tools/ProjectCreator/ProjectCreator.java
浏览文件 @
4cc17396
/*
* Copyright (c) 1999, 201
2
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 201
3
, 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,10 +39,15 @@ public class ProjectCreator {
+
"jvm.dll; no trailing slash>"
);
System
.
err
.
println
(
" If any of the above are specified, "
+
"they must all be."
);
System
.
err
.
println
(
" Note: if '-altRelativeInclude' option below is "
+
"used, then the '-relativeAltSrcInclude' option must be used "
+
"to specify the alternate source dir, e.g., 'src\\closed'"
);
System
.
err
.
println
(
" Additional, optional arguments, which can be "
+
"specified multiple times:"
);
System
.
err
.
println
(
" -absoluteInclude <string containing absolute "
+
"path to include directory>"
);
System
.
err
.
println
(
" -altRelativeInclude <string containing "
+
"alternate include directory relative to -envVar>"
);
System
.
err
.
println
(
" -relativeInclude <string containing include "
+
"directory relative to -envVar>"
);
System
.
err
.
println
(
" -define <preprocessor flag to be #defined "
...
...
src/share/tools/ProjectCreator/WinGammaPlatform.java
浏览文件 @
4cc17396
/*
* Copyright (c) 1999, 201
2
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 201
3
, 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
...
...
@@ -140,10 +140,17 @@ public abstract class WinGammaPlatform {
"already exist>"
);
System
.
err
.
println
(
" If any of the above are specified, "
+
"they must all be."
);
System
.
err
.
println
(
" Note: if '-altRelativeInclude' option below "
+
"is used, then the '-relativeAltSrcInclude' "
+
"option must be used to specify the alternate "
+
"source dir, e.g., 'src\\closed'"
);
System
.
err
.
println
(
" Additional, optional arguments, which can be "
+
"specified multiple times:"
);
System
.
err
.
println
(
" -absoluteInclude <string containing absolute "
+
"path to include directory>"
);
System
.
err
.
println
(
" -altRelativeInclude <string containing "
+
"alternate include directory relative to "
+
"-sourceBase>"
);
System
.
err
.
println
(
" -relativeInclude <string containing include "
+
"directory relative to -sourceBase>"
);
System
.
err
.
println
(
" -define <preprocessor flag to be #defined "
+
...
...
@@ -343,6 +350,12 @@ public abstract class WinGammaPlatform {
HsArgHandler
.
VECTOR
),
new
HsArgRule
(
"-altRelativeInclude"
,
"AltRelativeInclude"
,
null
,
HsArgHandler
.
VECTOR
),
new
HsArgRule
(
"-relativeInclude"
,
"RelativeInclude"
,
null
,
...
...
@@ -355,6 +368,12 @@ public abstract class WinGammaPlatform {
HsArgHandler
.
VECTOR
),
new
HsArgRule
(
"-relativeAltSrcInclude"
,
"RelativeAltSrcInclude"
,
null
,
HsArgHandler
.
STRING
),
new
HsArgRule
(
"-relativeSrcInclude"
,
"RelativeSrcInclude"
,
null
,
...
...
@@ -560,10 +579,6 @@ public abstract class WinGammaPlatform {
allConfigs
.
add
(
new
TieredFastDebugConfig
());
allConfigs
.
add
(
new
TieredProductConfig
());
allConfigs
.
add
(
new
CoreDebugConfig
());
allConfigs
.
add
(
new
CoreFastDebugConfig
());
allConfigs
.
add
(
new
CoreProductConfig
());
return
allConfigs
;
}
...
...
src/share/tools/ProjectCreator/WinGammaPlatformVC10.java
浏览文件 @
4cc17396
/*
* Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
import
java.io.File
;
import
java.io.FileNotFoundException
;
import
java.io.IOException
;
...
...
@@ -24,7 +48,7 @@ public class WinGammaPlatformVC10 extends WinGammaPlatformVC7 {
public
void
writeProjectFile
(
String
projectFileName
,
String
projectName
,
Vector
<
BuildConfig
>
allConfigs
)
throws
IOException
{
System
.
out
.
println
();
System
.
out
.
print
(
" Writing .vcxproj file: "
+
projectFileName
);
System
.
out
.
print
ln
(
" Writing .vcxproj file: "
+
projectFileName
);
String
projDir
=
Util
.
normalize
(
new
File
(
projectFileName
).
getParent
());
...
...
@@ -114,7 +138,7 @@ public class WinGammaPlatformVC10 extends WinGammaPlatformVC7 {
endTag
();
printWriter
.
close
();
System
.
out
.
println
(
" Done."
);
System
.
out
.
println
(
" Done
writing .vcxproj file
."
);
writeFilterFile
(
projectFileName
,
projectName
,
allConfigs
,
projDir
);
writeUserFile
(
projectFileName
,
allConfigs
);
...
...
src/share/vm/classfile/javaClasses.cpp
浏览文件 @
4cc17396
...
...
@@ -2557,6 +2557,26 @@ void java_lang_ref_SoftReference::set_clock(jlong value) {
*
offset
=
value
;
}
// Support for java_lang_invoke_DirectMethodHandle
int
java_lang_invoke_DirectMethodHandle
::
_member_offset
;
oop
java_lang_invoke_DirectMethodHandle
::
member
(
oop
dmh
)
{
oop
member_name
=
NULL
;
bool
is_dmh
=
dmh
->
is_oop
()
&&
java_lang_invoke_DirectMethodHandle
::
is_instance
(
dmh
);
assert
(
is_dmh
,
"a DirectMethodHandle oop is expected"
);
if
(
is_dmh
)
{
member_name
=
dmh
->
obj_field
(
member_offset_in_bytes
());
}
return
member_name
;
}
void
java_lang_invoke_DirectMethodHandle
::
compute_offsets
()
{
Klass
*
klass_oop
=
SystemDictionary
::
DirectMethodHandle_klass
();
if
(
klass_oop
!=
NULL
&&
EnableInvokeDynamic
)
{
compute_offset
(
_member_offset
,
klass_oop
,
vmSymbols
::
member_name
(),
vmSymbols
::
java_lang_invoke_MemberName_signature
());
}
}
// Support for java_lang_invoke_MethodHandle
...
...
@@ -3205,6 +3225,7 @@ void JavaClasses::compute_offsets() {
java_lang_ThreadGroup
::
compute_offsets
();
if
(
EnableInvokeDynamic
)
{
java_lang_invoke_MethodHandle
::
compute_offsets
();
java_lang_invoke_DirectMethodHandle
::
compute_offsets
();
java_lang_invoke_MemberName
::
compute_offsets
();
java_lang_invoke_LambdaForm
::
compute_offsets
();
java_lang_invoke_MethodType
::
compute_offsets
();
...
...
src/share/vm/classfile/javaClasses.hpp
浏览文件 @
4cc17396
...
...
@@ -976,6 +976,32 @@ class java_lang_invoke_MethodHandle: AllStatic {
static
int
form_offset_in_bytes
()
{
return
_form_offset
;
}
};
// Interface to java.lang.invoke.DirectMethodHandle objects
class
java_lang_invoke_DirectMethodHandle
:
AllStatic
{
friend
class
JavaClasses
;
private:
static
int
_member_offset
;
// the MemberName of this DMH
static
void
compute_offsets
();
public:
// Accessors
static
oop
member
(
oop
mh
);
// Testers
static
bool
is_subclass
(
Klass
*
klass
)
{
return
klass
->
is_subclass_of
(
SystemDictionary
::
DirectMethodHandle_klass
());
}
static
bool
is_instance
(
oop
obj
)
{
return
obj
!=
NULL
&&
is_subclass
(
obj
->
klass
());
}
// Accessors for code generation:
static
int
member_offset_in_bytes
()
{
return
_member_offset
;
}
};
// Interface to java.lang.invoke.LambdaForm objects
// (These are a private interface for managing adapter code generation.)
...
...
src/share/vm/classfile/systemDictionary.hpp
浏览文件 @
4cc17396
...
...
@@ -151,6 +151,7 @@ class SymbolPropertyTable;
do_klass(reflect_CallerSensitive_klass, sun_reflect_CallerSensitive, Opt ) \
\
/* support for dynamic typing; it's OK if these are NULL in earlier JDKs */
\
do_klass(DirectMethodHandle_klass, java_lang_invoke_DirectMethodHandle, Opt ) \
do_klass(MethodHandle_klass, java_lang_invoke_MethodHandle, Pre_JSR292 ) \
do_klass(MemberName_klass, java_lang_invoke_MemberName, Pre_JSR292 ) \
do_klass(MethodHandleNatives_klass, java_lang_invoke_MethodHandleNatives, Pre_JSR292 ) \
...
...
src/share/vm/classfile/vmSymbols.hpp
浏览文件 @
4cc17396
...
...
@@ -255,6 +255,7 @@
/* Support for JSR 292 & invokedynamic (JDK 1.7 and above) */
\
template(java_lang_invoke_CallSite, "java/lang/invoke/CallSite") \
template(java_lang_invoke_ConstantCallSite, "java/lang/invoke/ConstantCallSite") \
template(java_lang_invoke_DirectMethodHandle, "java/lang/invoke/DirectMethodHandle") \
template(java_lang_invoke_MutableCallSite, "java/lang/invoke/MutableCallSite") \
template(java_lang_invoke_VolatileCallSite, "java/lang/invoke/VolatileCallSite") \
template(java_lang_invoke_MethodHandle, "java/lang/invoke/MethodHandle") \
...
...
@@ -352,6 +353,7 @@
template(thread_id_name, "tid") \
template(newInstance0_name, "newInstance0") \
template(limit_name, "limit") \
template(member_name, "member") \
template(forName_name, "forName") \
template(forName0_name, "forName0") \
template(isJavaIdentifierStart_name, "isJavaIdentifierStart") \
...
...
src/share/vm/interpreter/interpreterRuntime.cpp
浏览文件 @
4cc17396
...
...
@@ -1209,3 +1209,26 @@ IRT_LEAF(void, InterpreterRuntime::popframe_move_outgoing_args(JavaThread* threa
size_of_arguments
*
Interpreter
::
stackElementSize
);
IRT_END
#endif
#if INCLUDE_JVMTI
// This is a support of the JVMTI PopFrame interface.
// Make sure it is an invokestatic of a polymorphic intrinsic that has a member_name argument
// and return it as a vm_result so that it can be reloaded in the list of invokestatic parameters.
// The dmh argument is a reference to a DirectMethoHandle that has a member name field.
IRT_ENTRY
(
void
,
InterpreterRuntime
::
member_name_arg_or_null
(
JavaThread
*
thread
,
address
dmh
,
Method
*
method
,
address
bcp
))
Bytecodes
::
Code
code
=
Bytecodes
::
code_at
(
method
,
bcp
);
if
(
code
!=
Bytecodes
::
_invokestatic
)
{
return
;
}
ConstantPool
*
cpool
=
method
->
constants
();
int
cp_index
=
Bytes
::
get_native_u2
(
bcp
+
1
)
+
ConstantPool
::
CPCACHE_INDEX_TAG
;
Symbol
*
cname
=
cpool
->
klass_name_at
(
cpool
->
klass_ref_index_at
(
cp_index
));
Symbol
*
mname
=
cpool
->
name_ref_at
(
cp_index
);
if
(
MethodHandles
::
has_member_arg
(
cname
,
mname
))
{
oop
member_name
=
java_lang_invoke_DirectMethodHandle
::
member
((
oop
)
dmh
);
thread
->
set_vm_result
(
member_name
);
}
IRT_END
#endif // INCLUDE_JVMTI
src/share/vm/interpreter/interpreterRuntime.hpp
浏览文件 @
4cc17396
...
...
@@ -95,6 +95,9 @@ class InterpreterRuntime: AllStatic {
static
void
create_exception
(
JavaThread
*
thread
,
char
*
name
,
char
*
message
);
static
void
create_klass_exception
(
JavaThread
*
thread
,
char
*
name
,
oopDesc
*
obj
);
static
address
exception_handler_for_exception
(
JavaThread
*
thread
,
oopDesc
*
exception
);
#if INCLUDE_JVMTI
static
void
member_name_arg_or_null
(
JavaThread
*
thread
,
address
dmh
,
Method
*
m
,
address
bcp
);
#endif
static
void
throw_pending_exception
(
JavaThread
*
thread
);
// Statics & fields
...
...
test/runtime/7107135/Test7107135.sh
浏览文件 @
4cc17396
...
...
@@ -53,9 +53,6 @@ case "$OS" in
fi
;;
*
)
NULL
=
NUL
PS
=
";"
FS
=
"
\\
"
echo
"Test passed; only valid for Linux"
exit
0
;
;;
...
...
@@ -87,14 +84,16 @@ ${TESTJAVA}${FS}bin${FS}java -cp ${THIS_DIR} Test test-rw
echo
echo
Test changing of stack protection:
echo
${
TESTJAVA
}${
FS
}
bin
${
FS
}
java
-cp
${
THIS_DIR
}
Test test-rw
echo
${
TESTJAVA
}${
FS
}
bin
${
FS
}
java
-cp
${
THIS_DIR
}
Test test-rw
x
${
TESTJAVA
}${
FS
}
bin
${
FS
}
java
-cp
${
THIS_DIR
}
Test test-rwx
JAVA_RETVAL
=
$?
if
[
"
$
?
"
==
"0"
]
if
[
"
$
JAVA_RETVAL
"
==
"0"
]
then
echo
echo
${
TESTJAVA
}${
FS
}
bin
${
FS
}
java
-cp
${
THIS_DIR
}
TestMT test-rwx
${
TESTJAVA
}${
FS
}
bin
${
FS
}
java
-cp
${
THIS_DIR
}
TestMT test-rwx
JAVA_RETVAL
=
$?
fi
exit
$
?
exit
$
JAVA_RETVAL
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录