We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent 2215e5a commit 9a468d8Copy full SHA for 9a468d8
src/hotspot/cpu/x86/x86_32.ad
@@ -308,7 +308,7 @@ static int sizeof_FFree_Float_Stack_All = -1;
308
309
int MachCallRuntimeNode::ret_addr_offset() {
310
assert(sizeof_FFree_Float_Stack_All != -1, "must have been emitted already");
311
- return sizeof_FFree_Float_Stack_All + 5 + pre_call_resets_size();
+ return 5 + pre_call_resets_size() + (_leaf_no_fp ? 0 : sizeof_FFree_Float_Stack_All);
312
}
313
314
int MachCallNativeNode::ret_addr_offset() {
src/hotspot/share/opto/callnode.hpp
@@ -854,6 +854,7 @@ class CallLeafNoFPNode : public CallLeafNode {
854
const TypePtr* adr_type)
855
: CallLeafNode(tf, addr, name, adr_type)
856
{
857
+ init_class_id(Class_CallLeafNoFP);
858
859
virtual int Opcode() const;
860
};
src/hotspot/share/opto/machnode.hpp
@@ -994,6 +994,7 @@ class MachCallRuntimeNode : public MachCallNode {
994
virtual uint size_of() const; // Size is bigger
995
public:
996
const char *_name; // Printable name, if _method is NULL
997
+ bool _leaf_no_fp; // Is this CallLeafNoFP?
998
MachCallRuntimeNode() : MachCallNode() {
999
init_class_id(Class_MachCallRuntime);
1000
src/hotspot/share/opto/matcher.cpp
@@ -1264,7 +1264,9 @@ MachNode *Matcher::match_sfpt( SafePointNode *sfpt ) {
1264
call_java->as_CallDynamicJava()->_vtable_index;
1265
1266
else if( mcall->is_MachCallRuntime() ) {
1267
- mcall->as_MachCallRuntime()->_name = call->as_CallRuntime()->_name;
+ MachCallRuntimeNode* mach_call_rt = mcall->as_MachCallRuntime();
1268
+ mach_call_rt->_name = call->as_CallRuntime()->_name;
1269
+ mach_call_rt->_leaf_no_fp = call->is_CallLeafNoFP();
1270
1271
else if( mcall->is_MachCallNative() ) {
1272
MachCallNativeNode* mach_call_native = mcall->as_MachCallNative();
src/hotspot/share/opto/node.hpp
@@ -49,6 +49,7 @@ class CMoveNode;
49
class CallDynamicJavaNode;
50
class CallJavaNode;
51
class CallLeafNode;
52
+class CallLeafNoFPNode;
53
class CallNode;
54
class CallRuntimeNode;
55
class CallNativeNode;
@@ -627,6 +628,7 @@ class Node {
627
628
DEFINE_CLASS_ID(CallDynamicJava, CallJava, 1)
629
DEFINE_CLASS_ID(CallRuntime, Call, 1)
630
DEFINE_CLASS_ID(CallLeaf, CallRuntime, 0)
631
+ DEFINE_CLASS_ID(CallLeafNoFP, CallLeaf, 0)
632
DEFINE_CLASS_ID(Allocate, Call, 2)
633
DEFINE_CLASS_ID(AllocateArray, Allocate, 0)
634
DEFINE_CLASS_ID(AbstractLock, Call, 3)
@@ -821,6 +823,7 @@ class Node {
821
823
DEFINE_CLASS_QUERY(CallDynamicJava)
822
824
DEFINE_CLASS_QUERY(CallJava)
825
DEFINE_CLASS_QUERY(CallLeaf)
826
+ DEFINE_CLASS_QUERY(CallLeafNoFP)
827
DEFINE_CLASS_QUERY(CallRuntime)
828
DEFINE_CLASS_QUERY(CallStaticJava)
829
DEFINE_CLASS_QUERY(Catch)
0 commit comments