Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
6cfb9c00
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看板
提交
6cfb9c00
编写于
1月 25, 2012
作者:
D
dsamersoff
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
6239c6c4
05014695
变更
18
隐藏空白更改
内联
并排
Showing
18 changed file
with
62 addition
and
169 deletion
+62
-169
.hgtags
.hgtags
+2
-0
make/hotspot_version
make/hotspot_version
+1
-1
src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp
src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp
+2
-3
src/cpu/sparc/vm/c1_LIRAssembler_sparc.hpp
src/cpu/sparc/vm/c1_LIRAssembler_sparc.hpp
+2
-2
src/cpu/sparc/vm/frame_sparc.inline.hpp
src/cpu/sparc/vm/frame_sparc.inline.hpp
+3
-1
src/cpu/sparc/vm/methodHandles_sparc.cpp
src/cpu/sparc/vm/methodHandles_sparc.cpp
+1
-1
src/cpu/x86/vm/c1_LIRAssembler_x86.cpp
src/cpu/x86/vm/c1_LIRAssembler_x86.cpp
+2
-3
src/cpu/x86/vm/frame_x86.cpp
src/cpu/x86/vm/frame_x86.cpp
+19
-1
src/cpu/x86/vm/frame_x86.hpp
src/cpu/x86/vm/frame_x86.hpp
+2
-1
src/cpu/x86/vm/methodHandles_x86.cpp
src/cpu/x86/vm/methodHandles_x86.cpp
+2
-2
src/cpu/zero/vm/frame_zero.inline.hpp
src/cpu/zero/vm/frame_zero.inline.hpp
+5
-1
src/cpu/zero/vm/methodHandles_zero.hpp
src/cpu/zero/vm/methodHandles_zero.hpp
+0
-40
src/share/vm/prims/methodHandles.cpp
src/share/vm/prims/methodHandles.cpp
+3
-55
src/share/vm/prims/methodHandles.hpp
src/share/vm/prims/methodHandles.hpp
+0
-40
src/share/vm/runtime/frame.cpp
src/share/vm/runtime/frame.cpp
+8
-11
src/share/vm/runtime/frame.hpp
src/share/vm/runtime/frame.hpp
+10
-1
src/share/vm/runtime/globals.hpp
src/share/vm/runtime/globals.hpp
+0
-4
src/share/vm/runtime/sharedRuntime.cpp
src/share/vm/runtime/sharedRuntime.cpp
+0
-2
未找到文件。
.hgtags
浏览文件 @
6cfb9c00
...
@@ -211,3 +211,5 @@ a2fef924d8e6f37dac2a887315e3502876cc8e24 hs23-b08
...
@@ -211,3 +211,5 @@ a2fef924d8e6f37dac2a887315e3502876cc8e24 hs23-b08
fe2c8764998112b7fefcd7d41599714813ae4327 jdk8-b20
fe2c8764998112b7fefcd7d41599714813ae4327 jdk8-b20
9952d1c439d64c5fd4ad1236a63a62bd5a49d4c3 jdk8-b21
9952d1c439d64c5fd4ad1236a63a62bd5a49d4c3 jdk8-b21
513351373923f74a7c91755748b95c9771e59f96 hs23-b10
513351373923f74a7c91755748b95c9771e59f96 hs23-b10
24727fb37561779077fdfa5a33342246f20e5c0f jdk8-b22
dcc292399a39113957eebbd3e487b7e05e2c79fc hs23-b11
make/hotspot_version
浏览文件 @
6cfb9c00
...
@@ -35,7 +35,7 @@ HOTSPOT_VM_COPYRIGHT=Copyright 2011
...
@@ -35,7 +35,7 @@ HOTSPOT_VM_COPYRIGHT=Copyright 2011
HS_MAJOR_VER=23
HS_MAJOR_VER=23
HS_MINOR_VER=0
HS_MINOR_VER=0
HS_BUILD_NUMBER=1
1
HS_BUILD_NUMBER=1
2
JDK_MAJOR_VER=1
JDK_MAJOR_VER=1
JDK_MINOR_VER=8
JDK_MINOR_VER=8
...
...
src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp
浏览文件 @
6cfb9c00
...
@@ -391,7 +391,7 @@ int LIR_Assembler::emit_exception_handler() {
...
@@ -391,7 +391,7 @@ int LIR_Assembler::emit_exception_handler() {
__
call
(
Runtime1
::
entry_for
(
Runtime1
::
handle_exception_from_callee_id
),
relocInfo
::
runtime_call_type
);
__
call
(
Runtime1
::
entry_for
(
Runtime1
::
handle_exception_from_callee_id
),
relocInfo
::
runtime_call_type
);
__
delayed
()
->
nop
();
__
delayed
()
->
nop
();
__
should_not_reach_here
();
__
should_not_reach_here
();
assert
(
code_offset
()
-
offset
<=
exception_handler_size
,
"overflow"
);
guarantee
(
code_offset
()
-
offset
<=
exception_handler_size
,
"overflow"
);
__
end_a_stub
();
__
end_a_stub
();
return
offset
;
return
offset
;
...
@@ -474,8 +474,7 @@ int LIR_Assembler::emit_deopt_handler() {
...
@@ -474,8 +474,7 @@ int LIR_Assembler::emit_deopt_handler() {
AddressLiteral
deopt_blob
(
SharedRuntime
::
deopt_blob
()
->
unpack
());
AddressLiteral
deopt_blob
(
SharedRuntime
::
deopt_blob
()
->
unpack
());
__
JUMP
(
deopt_blob
,
G3_scratch
,
0
);
// sethi;jmp
__
JUMP
(
deopt_blob
,
G3_scratch
,
0
);
// sethi;jmp
__
delayed
()
->
nop
();
__
delayed
()
->
nop
();
assert
(
code_offset
()
-
offset
<=
deopt_handler_size
,
"overflow"
);
guarantee
(
code_offset
()
-
offset
<=
deopt_handler_size
,
"overflow"
);
debug_only
(
__
stop
(
"should have gone to the caller"
);)
__
end_a_stub
();
__
end_a_stub
();
return
offset
;
return
offset
;
...
...
src/cpu/sparc/vm/c1_LIRAssembler_sparc.hpp
浏览文件 @
6cfb9c00
...
@@ -69,7 +69,7 @@ enum {
...
@@ -69,7 +69,7 @@ enum {
#else
#else
call_stub_size
=
20
,
call_stub_size
=
20
,
#endif // _LP64
#endif // _LP64
exception_handler_size
=
DEBUG_ONLY
(
1
*
K
)
NOT_DEBUG
(
1
0
*
4
),
exception_handler_size
=
DEBUG_ONLY
(
1
*
K
)
NOT_DEBUG
(
1
28
),
deopt_handler_size
=
DEBUG_ONLY
(
1
*
K
)
NOT_DEBUG
(
10
*
4
)
};
deopt_handler_size
=
DEBUG_ONLY
(
1
*
K
)
NOT_DEBUG
(
64
)
};
#endif // CPU_SPARC_VM_C1_LIRASSEMBLER_SPARC_HPP
#endif // CPU_SPARC_VM_C1_LIRASSEMBLER_SPARC_HPP
src/cpu/sparc/vm/frame_sparc.inline.hpp
浏览文件 @
6cfb9c00
/*
/*
* Copyright (c) 1997, 201
0
, 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.
* 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
...
@@ -82,6 +82,8 @@ inline address* frame::O0_addr() const { return (address*) &younger_sp()[ I0->s
...
@@ -82,6 +82,8 @@ inline address* frame::O0_addr() const { return (address*) &younger_sp()[ I0->s
inline
intptr_t
*
frame
::
sender_sp
()
const
{
return
fp
();
}
inline
intptr_t
*
frame
::
sender_sp
()
const
{
return
fp
();
}
inline
intptr_t
*
frame
::
real_fp
()
const
{
return
fp
();
}
// Used only in frame::oopmapreg_to_location
// Used only in frame::oopmapreg_to_location
// This return a value in VMRegImpl::slot_size
// This return a value in VMRegImpl::slot_size
inline
int
frame
::
pd_oop_map_offset_adjustment
()
const
{
inline
int
frame
::
pd_oop_map_offset_adjustment
()
const
{
...
...
src/cpu/sparc/vm/methodHandles_sparc.cpp
浏览文件 @
6cfb9c00
...
@@ -1045,7 +1045,7 @@ int MethodHandles::adapter_conversion_ops_supported_mask() {
...
@@ -1045,7 +1045,7 @@ int MethodHandles::adapter_conversion_ops_supported_mask() {
|
(
1
<<
java_lang_invoke_AdapterMethodHandle
::
OP_DROP_ARGS
)
|
(
1
<<
java_lang_invoke_AdapterMethodHandle
::
OP_DROP_ARGS
)
// OP_COLLECT_ARGS is below...
// OP_COLLECT_ARGS is below...
|
(
1
<<
java_lang_invoke_AdapterMethodHandle
::
OP_SPREAD_ARGS
)
|
(
1
<<
java_lang_invoke_AdapterMethodHandle
::
OP_SPREAD_ARGS
)
|
(
!
UseRicochetFrames
?
0
:
|
(
java_lang_invoke_MethodTypeForm
::
vmlayout_offset_in_bytes
()
<=
0
?
0
:
java_lang_invoke_MethodTypeForm
::
vmlayout_offset_in_bytes
()
<=
0
?
0
:
((
1
<<
java_lang_invoke_AdapterMethodHandle
::
OP_PRIM_TO_REF
)
((
1
<<
java_lang_invoke_AdapterMethodHandle
::
OP_PRIM_TO_REF
)
|
(
1
<<
java_lang_invoke_AdapterMethodHandle
::
OP_COLLECT_ARGS
)
|
(
1
<<
java_lang_invoke_AdapterMethodHandle
::
OP_COLLECT_ARGS
)
...
...
src/cpu/x86/vm/c1_LIRAssembler_x86.cpp
浏览文件 @
6cfb9c00
...
@@ -406,7 +406,7 @@ int LIR_Assembler::emit_exception_handler() {
...
@@ -406,7 +406,7 @@ int LIR_Assembler::emit_exception_handler() {
// search an exception handler (rax: exception oop, rdx: throwing pc)
// search an exception handler (rax: exception oop, rdx: throwing pc)
__
call
(
RuntimeAddress
(
Runtime1
::
entry_for
(
Runtime1
::
handle_exception_from_callee_id
)));
__
call
(
RuntimeAddress
(
Runtime1
::
entry_for
(
Runtime1
::
handle_exception_from_callee_id
)));
__
should_not_reach_here
();
__
should_not_reach_here
();
assert
(
code_offset
()
-
offset
<=
exception_handler_size
,
"overflow"
);
guarantee
(
code_offset
()
-
offset
<=
exception_handler_size
,
"overflow"
);
__
end_a_stub
();
__
end_a_stub
();
return
offset
;
return
offset
;
...
@@ -490,8 +490,7 @@ int LIR_Assembler::emit_deopt_handler() {
...
@@ -490,8 +490,7 @@ int LIR_Assembler::emit_deopt_handler() {
__
pushptr
(
here
.
addr
());
__
pushptr
(
here
.
addr
());
__
jump
(
RuntimeAddress
(
SharedRuntime
::
deopt_blob
()
->
unpack
()));
__
jump
(
RuntimeAddress
(
SharedRuntime
::
deopt_blob
()
->
unpack
()));
guarantee
(
code_offset
()
-
offset
<=
deopt_handler_size
,
"overflow"
);
assert
(
code_offset
()
-
offset
<=
deopt_handler_size
,
"overflow"
);
__
end_a_stub
();
__
end_a_stub
();
return
offset
;
return
offset
;
...
...
src/cpu/x86/vm/frame_x86.cpp
浏览文件 @
6cfb9c00
/*
/*
* 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.
* 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
...
@@ -675,3 +675,21 @@ intptr_t *frame::initial_deoptimization_info() {
...
@@ -675,3 +675,21 @@ intptr_t *frame::initial_deoptimization_info() {
// used to reset the saved FP
// used to reset the saved FP
return
fp
();
return
fp
();
}
}
intptr_t
*
frame
::
real_fp
()
const
{
if
(
_cb
!=
NULL
)
{
// use the frame size if valid
int
size
=
_cb
->
frame_size
();
if
((
size
>
0
)
&&
(
!
is_ricochet_frame
()))
{
// Work-around: ricochet explicitly excluded because frame size is not
// constant for the ricochet blob but its frame_size could not, for
// some reasons, be declared as <= 0. This potentially confusing
// size declaration should be fixed as another CR.
return
unextended_sp
()
+
size
;
}
}
// else rely on fp()
assert
(
!
is_compiled_frame
(),
"unknown compiled frame size"
);
return
fp
();
}
src/cpu/x86/vm/frame_x86.hpp
浏览文件 @
6cfb9c00
/*
/*
* 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.
* 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
...
@@ -188,6 +188,7 @@
...
@@ -188,6 +188,7 @@
frame
(
intptr_t
*
sp
,
intptr_t
*
fp
);
frame
(
intptr_t
*
sp
,
intptr_t
*
fp
);
// accessors for the instance variables
// accessors for the instance variables
// Note: not necessarily the real 'frame pointer' (see real_fp)
intptr_t
*
fp
()
const
{
return
_fp
;
}
intptr_t
*
fp
()
const
{
return
_fp
;
}
inline
address
*
sender_pc_addr
()
const
;
inline
address
*
sender_pc_addr
()
const
;
...
...
src/cpu/x86/vm/methodHandles_x86.cpp
浏览文件 @
6cfb9c00
...
@@ -1005,7 +1005,7 @@ void trace_method_handle_stub(const char* adaptername,
...
@@ -1005,7 +1005,7 @@ void trace_method_handle_stub(const char* adaptername,
intptr_t
*
base_sp
=
last_sp
;
intptr_t
*
base_sp
=
last_sp
;
typedef
MethodHandles
::
RicochetFrame
RicochetFrame
;
typedef
MethodHandles
::
RicochetFrame
RicochetFrame
;
RicochetFrame
*
rfp
=
(
RicochetFrame
*
)((
address
)
saved_bp
-
RicochetFrame
::
sender_link_offset_in_bytes
());
RicochetFrame
*
rfp
=
(
RicochetFrame
*
)((
address
)
saved_bp
-
RicochetFrame
::
sender_link_offset_in_bytes
());
if
(
!
UseRicochetFrames
||
Universe
::
heap
()
->
is_in
((
address
)
rfp
->
saved_args_base
()))
{
if
(
Universe
::
heap
()
->
is_in
((
address
)
rfp
->
saved_args_base
()))
{
// Probably an interpreter frame.
// Probably an interpreter frame.
base_sp
=
(
intptr_t
*
)
saved_bp
[
frame
::
interpreter_frame_monitor_block_top_offset
];
base_sp
=
(
intptr_t
*
)
saved_bp
[
frame
::
interpreter_frame_monitor_block_top_offset
];
}
}
...
@@ -1104,7 +1104,7 @@ int MethodHandles::adapter_conversion_ops_supported_mask() {
...
@@ -1104,7 +1104,7 @@ int MethodHandles::adapter_conversion_ops_supported_mask() {
|
(
1
<<
java_lang_invoke_AdapterMethodHandle
::
OP_DROP_ARGS
)
|
(
1
<<
java_lang_invoke_AdapterMethodHandle
::
OP_DROP_ARGS
)
//OP_COLLECT_ARGS is below...
//OP_COLLECT_ARGS is below...
|
(
1
<<
java_lang_invoke_AdapterMethodHandle
::
OP_SPREAD_ARGS
)
|
(
1
<<
java_lang_invoke_AdapterMethodHandle
::
OP_SPREAD_ARGS
)
|
(
!
UseRicochetFrames
?
0
:
|
(
java_lang_invoke_MethodTypeForm
::
vmlayout_offset_in_bytes
()
<=
0
?
0
:
java_lang_invoke_MethodTypeForm
::
vmlayout_offset_in_bytes
()
<=
0
?
0
:
((
1
<<
java_lang_invoke_AdapterMethodHandle
::
OP_PRIM_TO_REF
)
((
1
<<
java_lang_invoke_AdapterMethodHandle
::
OP_PRIM_TO_REF
)
|
(
1
<<
java_lang_invoke_AdapterMethodHandle
::
OP_COLLECT_ARGS
)
|
(
1
<<
java_lang_invoke_AdapterMethodHandle
::
OP_COLLECT_ARGS
)
...
...
src/cpu/zero/vm/frame_zero.inline.hpp
浏览文件 @
6cfb9c00
/*
/*
* Copyright (c) 2003, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 201
2
, 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.
*
*
...
@@ -72,6 +72,10 @@ inline intptr_t* frame::sender_sp() const {
...
@@ -72,6 +72,10 @@ inline intptr_t* frame::sender_sp() const {
return
fp
()
+
1
;
return
fp
()
+
1
;
}
}
inline
intptr_t
*
frame
::
real_fp
()
const
{
return
fp
();
}
inline
intptr_t
*
frame
::
link
()
const
{
inline
intptr_t
*
frame
::
link
()
const
{
ShouldNotCallThis
();
ShouldNotCallThis
();
}
}
...
...
src/cpu/zero/vm/methodHandles_zero.hpp
浏览文件 @
6cfb9c00
...
@@ -29,43 +29,3 @@ enum /* platform_dependent_constants */ {
...
@@ -29,43 +29,3 @@ enum /* platform_dependent_constants */ {
adapter_code_size
=
0
adapter_code_size
=
0
};
};
#define TARGET_ARCH_NYI_6939861 1
// ..#ifdef TARGET_ARCH_NYI_6939861
// .. // Here are some backward compatible declarations until the 6939861 ports are updated.
// .. #define _adapter_flyby (_EK_LIMIT + 10)
// .. #define _adapter_ricochet (_EK_LIMIT + 11)
// .. #define _adapter_opt_spread_1 _adapter_opt_spread_1_ref
// .. #define _adapter_opt_spread_more _adapter_opt_spread_ref
// .. enum {
// .. _INSERT_NO_MASK = -1,
// .. _INSERT_REF_MASK = 0,
// .. _INSERT_INT_MASK = 1,
// .. _INSERT_LONG_MASK = 3
// .. };
// .. static void get_ek_bound_mh_info(EntryKind ek, BasicType& arg_type, int& arg_mask, int& arg_slots) {
// .. arg_type = ek_bound_mh_arg_type(ek);
// .. arg_mask = 0;
// .. arg_slots = type2size[arg_type];;
// .. }
// .. static void get_ek_adapter_opt_swap_rot_info(EntryKind ek, int& swap_bytes, int& rotate) {
// .. int swap_slots = ek_adapter_opt_swap_slots(ek);
// .. rotate = ek_adapter_opt_swap_mode(ek);
// .. swap_bytes = swap_slots * Interpreter::stackElementSize;
// .. }
// .. static int get_ek_adapter_opt_spread_info(EntryKind ek) {
// .. return ek_adapter_opt_spread_count(ek);
// .. }
// ..
// .. static void insert_arg_slots(MacroAssembler* _masm,
// .. RegisterOrConstant arg_slots,
// .. int arg_mask,
// .. Register argslot_reg,
// .. Register temp_reg, Register temp2_reg, Register temp3_reg = noreg);
// ..
// .. static void remove_arg_slots(MacroAssembler* _masm,
// .. RegisterOrConstant arg_slots,
// .. Register argslot_reg,
// .. Register temp_reg, Register temp2_reg, Register temp3_reg = noreg);
// ..
// .. static void trace_method_handle(MacroAssembler* _masm, const char* adaptername) PRODUCT_RETURN;
// ..#endif //TARGET_ARCH_NYI_6939861
src/share/vm/prims/methodHandles.cpp
浏览文件 @
6cfb9c00
...
@@ -194,9 +194,6 @@ bool MethodHandles::spot_check_entry_names() {
...
@@ -194,9 +194,6 @@ bool MethodHandles::spot_check_entry_names() {
// MethodHandles::generate_adapters
// MethodHandles::generate_adapters
//
//
void
MethodHandles
::
generate_adapters
()
{
void
MethodHandles
::
generate_adapters
()
{
#ifdef TARGET_ARCH_NYI_6939861
if
(
FLAG_IS_DEFAULT
(
UseRicochetFrames
))
UseRicochetFrames
=
false
;
#endif
if
(
!
EnableInvokeDynamic
||
SystemDictionary
::
MethodHandle_klass
()
==
NULL
)
return
;
if
(
!
EnableInvokeDynamic
||
SystemDictionary
::
MethodHandle_klass
()
==
NULL
)
return
;
assert
(
_adapter_code
==
NULL
,
"generate only once"
);
assert
(
_adapter_code
==
NULL
,
"generate only once"
);
...
@@ -230,18 +227,6 @@ void MethodHandlesAdapterGenerator::generate() {
...
@@ -230,18 +227,6 @@ void MethodHandlesAdapterGenerator::generate() {
}
}
#ifdef TARGET_ARCH_NYI_6939861
// these defs belong in methodHandles_<arch>.cpp
frame
MethodHandles
::
ricochet_frame_sender
(
const
frame
&
fr
,
RegisterMap
*
map
)
{
ShouldNotCallThis
();
return
fr
;
}
void
MethodHandles
::
ricochet_frame_oops_do
(
const
frame
&
fr
,
OopClosure
*
f
,
const
RegisterMap
*
reg_map
)
{
ShouldNotCallThis
();
}
#endif //TARGET_ARCH_NYI_6939861
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
// MethodHandles::ek_supported
// MethodHandles::ek_supported
//
//
...
@@ -251,28 +236,11 @@ bool MethodHandles::ek_supported(MethodHandles::EntryKind ek) {
...
@@ -251,28 +236,11 @@ bool MethodHandles::ek_supported(MethodHandles::EntryKind ek) {
case
_adapter_unused_13
:
case
_adapter_unused_13
:
return
false
;
// not defined yet
return
false
;
// not defined yet
case
_adapter_prim_to_ref
:
case
_adapter_prim_to_ref
:
return
UseRicochetFrames
&&
conv_op_supported
(
java_lang_invoke_AdapterMethodHandle
::
OP_PRIM_TO_REF
);
return
conv_op_supported
(
java_lang_invoke_AdapterMethodHandle
::
OP_PRIM_TO_REF
);
case
_adapter_collect_args
:
case
_adapter_collect_args
:
return
UseRicochetFrames
&&
conv_op_supported
(
java_lang_invoke_AdapterMethodHandle
::
OP_COLLECT_ARGS
);
return
conv_op_supported
(
java_lang_invoke_AdapterMethodHandle
::
OP_COLLECT_ARGS
);
case
_adapter_fold_args
:
case
_adapter_fold_args
:
return
UseRicochetFrames
&&
conv_op_supported
(
java_lang_invoke_AdapterMethodHandle
::
OP_FOLD_ARGS
);
return
conv_op_supported
(
java_lang_invoke_AdapterMethodHandle
::
OP_FOLD_ARGS
);
case
_adapter_opt_return_any
:
return
UseRicochetFrames
;
#ifdef TARGET_ARCH_NYI_6939861
// ports before 6939861 supported only three kinds of spread ops
case
_adapter_spread_args
:
// restrict spreads to three kinds:
switch
(
ek
)
{
case
_adapter_opt_spread_0
:
case
_adapter_opt_spread_1
:
case
_adapter_opt_spread_more
:
break
;
default:
return
false
;
break
;
}
break
;
#endif //TARGET_ARCH_NYI_6939861
}
}
return
true
;
return
true
;
}
}
...
@@ -1988,9 +1956,6 @@ void MethodHandles::verify_AdapterMethodHandle(Handle mh, int argnum, TRAPS) {
...
@@ -1988,9 +1956,6 @@ void MethodHandles::verify_AdapterMethodHandle(Handle mh, int argnum, TRAPS) {
case
_adapter_prim_to_ref
:
// boxer MH to use
case
_adapter_prim_to_ref
:
// boxer MH to use
case
_adapter_collect_args
:
// method handle which collects the args
case
_adapter_collect_args
:
// method handle which collects the args
case
_adapter_fold_args
:
// method handle which collects the args
case
_adapter_fold_args
:
// method handle which collects the args
if
(
!
UseRicochetFrames
)
{
{
err
=
"box/collect/fold operators are not supported"
;
break
;
}
}
if
(
!
java_lang_invoke_MethodHandle
::
is_instance
(
argument
()))
if
(
!
java_lang_invoke_MethodHandle
::
is_instance
(
argument
()))
{
err
=
"MethodHandle adapter argument required"
;
break
;
}
{
err
=
"MethodHandle adapter argument required"
;
break
;
}
arg_mtype
=
Handle
(
THREAD
,
java_lang_invoke_MethodHandle
::
type
(
argument
()));
arg_mtype
=
Handle
(
THREAD
,
java_lang_invoke_MethodHandle
::
type
(
argument
()));
...
@@ -2370,7 +2335,6 @@ void MethodHandles::init_AdapterMethodHandle(Handle mh, Handle target, int argnu
...
@@ -2370,7 +2335,6 @@ void MethodHandles::init_AdapterMethodHandle(Handle mh, Handle target, int argnu
case
_adapter_prim_to_ref
:
case
_adapter_prim_to_ref
:
{
{
assert
(
UseRicochetFrames
,
"else don't come here"
);
// vminfo will be the location to insert the return value
// vminfo will be the location to insert the return value
vminfo
=
argslot
;
vminfo
=
argslot
;
ek_opt
=
_adapter_opt_collect_ref
;
ek_opt
=
_adapter_opt_collect_ref
;
...
@@ -2436,20 +2400,6 @@ void MethodHandles::init_AdapterMethodHandle(Handle mh, Handle target, int argnu
...
@@ -2436,20 +2400,6 @@ void MethodHandles::init_AdapterMethodHandle(Handle mh, Handle target, int argnu
case
_adapter_spread_args
:
case
_adapter_spread_args
:
{
{
#ifdef TARGET_ARCH_NYI_6939861
// ports before 6939861 supported only three kinds of spread ops
if
(
!
UseRicochetFrames
)
{
int
array_size
=
slots_pushed
+
1
;
assert
(
array_size
>=
0
,
""
);
vminfo
=
array_size
;
switch
(
array_size
)
{
case
0
:
ek_opt
=
_adapter_opt_spread_0
;
break
;
case
1
:
ek_opt
=
_adapter_opt_spread_1
;
break
;
default:
ek_opt
=
_adapter_opt_spread_more
;
break
;
}
break
;
}
#endif //TARGET_ARCH_NYI_6939861
// vminfo will be the required length of the array
// vminfo will be the required length of the array
int
array_size
=
(
slots_pushed
+
1
)
/
(
type2size
[
dest
]
==
2
?
2
:
1
);
int
array_size
=
(
slots_pushed
+
1
)
/
(
type2size
[
dest
]
==
2
?
2
:
1
);
vminfo
=
array_size
;
vminfo
=
array_size
;
...
@@ -2494,7 +2444,6 @@ void MethodHandles::init_AdapterMethodHandle(Handle mh, Handle target, int argnu
...
@@ -2494,7 +2444,6 @@ void MethodHandles::init_AdapterMethodHandle(Handle mh, Handle target, int argnu
case
_adapter_collect_args
:
case
_adapter_collect_args
:
{
{
assert
(
UseRicochetFrames
,
"else don't come here"
);
int
elem_slots
=
argument_slot_count
(
java_lang_invoke_MethodHandle
::
type
(
argument
()));
int
elem_slots
=
argument_slot_count
(
java_lang_invoke_MethodHandle
::
type
(
argument
()));
// vminfo will be the location to insert the return value
// vminfo will be the location to insert the return value
vminfo
=
argslot
;
vminfo
=
argslot
;
...
@@ -2563,7 +2512,6 @@ void MethodHandles::init_AdapterMethodHandle(Handle mh, Handle target, int argnu
...
@@ -2563,7 +2512,6 @@ void MethodHandles::init_AdapterMethodHandle(Handle mh, Handle target, int argnu
case
_adapter_fold_args
:
case
_adapter_fold_args
:
{
{
assert
(
UseRicochetFrames
,
"else don't come here"
);
int
elem_slots
=
argument_slot_count
(
java_lang_invoke_MethodHandle
::
type
(
argument
()));
int
elem_slots
=
argument_slot_count
(
java_lang_invoke_MethodHandle
::
type
(
argument
()));
// vminfo will be the location to insert the return value
// vminfo will be the location to insert the return value
vminfo
=
argslot
+
elem_slots
;
vminfo
=
argslot
+
elem_slots
;
...
...
src/share/vm/prims/methodHandles.hpp
浏览文件 @
6cfb9c00
...
@@ -738,46 +738,6 @@ public:
...
@@ -738,46 +738,6 @@ public:
#ifdef TARGET_ARCH_ppc
#ifdef TARGET_ARCH_ppc
# include "methodHandles_ppc.hpp"
# include "methodHandles_ppc.hpp"
#endif
#endif
#ifdef TARGET_ARCH_NYI_6939861
// Here are some backward compatible declarations until the 6939861 ports are updated.
#define _adapter_flyby (_EK_LIMIT + 10)
#define _adapter_ricochet (_EK_LIMIT + 11)
#define _adapter_opt_spread_1 _adapter_opt_spread_1_ref
#define _adapter_opt_spread_more _adapter_opt_spread_ref
enum
{
_INSERT_NO_MASK
=
-
1
,
_INSERT_REF_MASK
=
0
,
_INSERT_INT_MASK
=
1
,
_INSERT_LONG_MASK
=
3
};
static
void
get_ek_bound_mh_info
(
EntryKind
ek
,
BasicType
&
arg_type
,
int
&
arg_mask
,
int
&
arg_slots
)
{
arg_type
=
ek_bound_mh_arg_type
(
ek
);
arg_mask
=
0
;
arg_slots
=
type2size
[
arg_type
];;
}
static
void
get_ek_adapter_opt_swap_rot_info
(
EntryKind
ek
,
int
&
swap_bytes
,
int
&
rotate
)
{
int
swap_slots
=
ek_adapter_opt_swap_slots
(
ek
);
rotate
=
ek_adapter_opt_swap_mode
(
ek
);
swap_bytes
=
swap_slots
*
Interpreter
::
stackElementSize
;
}
static
int
get_ek_adapter_opt_spread_info
(
EntryKind
ek
)
{
return
ek_adapter_opt_spread_count
(
ek
);
}
static
void
insert_arg_slots
(
MacroAssembler
*
_masm
,
RegisterOrConstant
arg_slots
,
int
arg_mask
,
Register
argslot_reg
,
Register
temp_reg
,
Register
temp2_reg
,
Register
temp3_reg
=
noreg
);
static
void
remove_arg_slots
(
MacroAssembler
*
_masm
,
RegisterOrConstant
arg_slots
,
Register
argslot_reg
,
Register
temp_reg
,
Register
temp2_reg
,
Register
temp3_reg
=
noreg
);
static
void
trace_method_handle
(
MacroAssembler
*
_masm
,
const
char
*
adaptername
)
PRODUCT_RETURN
;
#endif //TARGET_ARCH_NYI_6939861
};
};
...
...
src/share/vm/runtime/frame.cpp
浏览文件 @
6cfb9c00
/*
/*
* 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.
* 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
...
@@ -1334,24 +1334,21 @@ void frame::interpreter_frame_verify_monitor(BasicObjectLock* value) const {
...
@@ -1334,24 +1334,21 @@ void frame::interpreter_frame_verify_monitor(BasicObjectLock* value) const {
void
frame
::
describe
(
FrameValues
&
values
,
int
frame_no
)
{
void
frame
::
describe
(
FrameValues
&
values
,
int
frame_no
)
{
intptr_t
*
frame_pointer
=
real_fp
();
if
(
is_entry_frame
()
||
is_compiled_frame
()
||
is_interpreted_frame
()
||
is_native_frame
())
{
if
(
is_entry_frame
()
||
is_compiled_frame
()
||
is_interpreted_frame
()
||
is_native_frame
())
{
// Label values common to most frames
// Label values common to most frames
values
.
describe
(
-
1
,
unextended_sp
(),
err_msg
(
"unextended_sp for #%d"
,
frame_no
));
values
.
describe
(
-
1
,
unextended_sp
(),
err_msg
(
"unextended_sp for #%d"
,
frame_no
));
values
.
describe
(
-
1
,
sp
(),
err_msg
(
"sp for #%d"
,
frame_no
));
values
.
describe
(
-
1
,
sp
(),
err_msg
(
"sp for #%d"
,
frame_no
));
if
(
is_compiled_frame
())
{
values
.
describe
(
-
1
,
frame_pointer
,
err_msg
(
"frame pointer for #%d"
,
frame_no
));
values
.
describe
(
-
1
,
sp
()
+
_cb
->
frame_size
(),
err_msg
(
"computed fp for #%d"
,
frame_no
));
}
else
{
values
.
describe
(
-
1
,
fp
(),
err_msg
(
"fp for #%d"
,
frame_no
));
}
}
}
if
(
is_interpreted_frame
())
{
if
(
is_interpreted_frame
())
{
methodOop
m
=
interpreter_frame_method
();
methodOop
m
=
interpreter_frame_method
();
int
bci
=
interpreter_frame_bci
();
int
bci
=
interpreter_frame_bci
();
// Label the method and current bci
// Label the method and current bci
values
.
describe
(
-
1
,
MAX2
(
sp
(),
f
p
()
),
values
.
describe
(
-
1
,
MAX2
(
sp
(),
f
rame_pointer
),
FormatBuffer
<
1024
>
(
"#%d method %s @ %d"
,
frame_no
,
m
->
name_and_sig_as_C_string
(),
bci
),
2
);
FormatBuffer
<
1024
>
(
"#%d method %s @ %d"
,
frame_no
,
m
->
name_and_sig_as_C_string
(),
bci
),
2
);
values
.
describe
(
-
1
,
MAX2
(
sp
(),
f
p
()
),
values
.
describe
(
-
1
,
MAX2
(
sp
(),
f
rame_pointer
),
err_msg
(
"- %d locals %d max stack"
,
m
->
max_locals
(),
m
->
max_stack
()),
1
);
err_msg
(
"- %d locals %d max stack"
,
m
->
max_locals
(),
m
->
max_stack
()),
1
);
if
(
m
->
max_locals
()
>
0
)
{
if
(
m
->
max_locals
()
>
0
)
{
intptr_t
*
l0
=
interpreter_frame_local_at
(
0
);
intptr_t
*
l0
=
interpreter_frame_local_at
(
0
);
...
@@ -1383,18 +1380,18 @@ void frame::describe(FrameValues& values, int frame_no) {
...
@@ -1383,18 +1380,18 @@ void frame::describe(FrameValues& values, int frame_no) {
}
}
}
else
if
(
is_entry_frame
())
{
}
else
if
(
is_entry_frame
())
{
// For now just label the frame
// For now just label the frame
values
.
describe
(
-
1
,
MAX2
(
sp
(),
f
p
()
),
err_msg
(
"#%d entry frame"
,
frame_no
),
2
);
values
.
describe
(
-
1
,
MAX2
(
sp
(),
f
rame_pointer
),
err_msg
(
"#%d entry frame"
,
frame_no
),
2
);
}
else
if
(
is_compiled_frame
())
{
}
else
if
(
is_compiled_frame
())
{
// For now just label the frame
// For now just label the frame
nmethod
*
nm
=
cb
()
->
as_nmethod_or_null
();
nmethod
*
nm
=
cb
()
->
as_nmethod_or_null
();
values
.
describe
(
-
1
,
MAX2
(
sp
(),
f
p
()
),
values
.
describe
(
-
1
,
MAX2
(
sp
(),
f
rame_pointer
),
FormatBuffer
<
1024
>
(
"#%d nmethod "
INTPTR_FORMAT
" for method %s%s"
,
frame_no
,
FormatBuffer
<
1024
>
(
"#%d nmethod "
INTPTR_FORMAT
" for method %s%s"
,
frame_no
,
nm
,
nm
->
method
()
->
name_and_sig_as_C_string
(),
nm
,
nm
->
method
()
->
name_and_sig_as_C_string
(),
is_deoptimized_frame
()
?
" (deoptimized"
:
""
),
2
);
is_deoptimized_frame
()
?
" (deoptimized"
:
""
),
2
);
}
else
if
(
is_native_frame
())
{
}
else
if
(
is_native_frame
())
{
// For now just label the frame
// For now just label the frame
nmethod
*
nm
=
cb
()
->
as_nmethod_or_null
();
nmethod
*
nm
=
cb
()
->
as_nmethod_or_null
();
values
.
describe
(
-
1
,
MAX2
(
sp
(),
f
p
()
),
values
.
describe
(
-
1
,
MAX2
(
sp
(),
f
rame_pointer
),
FormatBuffer
<
1024
>
(
"#%d nmethod "
INTPTR_FORMAT
" for native method %s"
,
frame_no
,
FormatBuffer
<
1024
>
(
"#%d nmethod "
INTPTR_FORMAT
" for native method %s"
,
frame_no
,
nm
,
nm
->
method
()
->
name_and_sig_as_C_string
()),
2
);
nm
,
nm
->
method
()
->
name_and_sig_as_C_string
()),
2
);
}
}
...
...
src/share/vm/runtime/frame.hpp
浏览文件 @
6cfb9c00
/*
/*
* 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.
* 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
...
@@ -221,6 +221,15 @@ class frame VALUE_OBJ_CLASS_SPEC {
...
@@ -221,6 +221,15 @@ class frame VALUE_OBJ_CLASS_SPEC {
// returns the stack pointer of the calling frame
// returns the stack pointer of the calling frame
intptr_t
*
sender_sp
()
const
;
intptr_t
*
sender_sp
()
const
;
// Returns the real 'frame pointer' for the current frame.
// This is the value expected by the platform ABI when it defines a
// frame pointer register. It may differ from the effective value of
// the FP register when that register is used in the JVM for other
// purposes (like compiled frames on some platforms).
// On other platforms, it is defined so that the stack area used by
// this frame goes from real_fp() to sp().
intptr_t
*
real_fp
()
const
;
// Deoptimization info, if needed (platform dependent).
// Deoptimization info, if needed (platform dependent).
// Stored in the initial_info field of the unroll info, to be used by
// Stored in the initial_info field of the unroll info, to be used by
// the platform dependent deoptimization blobs.
// the platform dependent deoptimization blobs.
...
...
src/share/vm/runtime/globals.hpp
浏览文件 @
6cfb9c00
...
@@ -3826,10 +3826,6 @@ class CommandLineFlags {
...
@@ -3826,10 +3826,6 @@ class CommandLineFlags {
develop(bool, StressMethodHandleWalk, false, \
develop(bool, StressMethodHandleWalk, false, \
"Process all method handles with MethodHandleWalk") \
"Process all method handles with MethodHandleWalk") \
\
\
diagnostic(bool, UseRicochetFrames, true, \
"use ricochet stack frames for method handle combination, " \
"if the platform supports them") \
\
experimental(bool, TrustFinalNonStaticFields, false, \
experimental(bool, TrustFinalNonStaticFields, false, \
"trust final non-static declarations for constant folding") \
"trust final non-static declarations for constant folding") \
\
\
...
...
src/share/vm/runtime/sharedRuntime.cpp
浏览文件 @
6cfb9c00
...
@@ -121,7 +121,6 @@ void SharedRuntime::generate_stubs() {
...
@@ -121,7 +121,6 @@ void SharedRuntime::generate_stubs() {
void
SharedRuntime
::
generate_ricochet_blob
()
{
void
SharedRuntime
::
generate_ricochet_blob
()
{
if
(
!
EnableInvokeDynamic
)
return
;
// leave it as a null
if
(
!
EnableInvokeDynamic
)
return
;
// leave it as a null
#ifndef TARGET_ARCH_NYI_6939861
// allocate space for the code
// allocate space for the code
ResourceMark
rm
;
ResourceMark
rm
;
// setup code generation tools
// setup code generation tools
...
@@ -142,7 +141,6 @@ void SharedRuntime::generate_ricochet_blob() {
...
@@ -142,7 +141,6 @@ void SharedRuntime::generate_ricochet_blob() {
}
}
_ricochet_blob
=
RicochetBlob
::
create
(
&
buffer
,
bounce_offset
,
exception_offset
,
frame_size_in_words
);
_ricochet_blob
=
RicochetBlob
::
create
(
&
buffer
,
bounce_offset
,
exception_offset
,
frame_size_in_words
);
#endif
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录