1
1
/*
2
- * Copyright (c) 1997, 2019 , Oracle and/or its affiliates. All rights reserved.
2
+ * Copyright (c) 1997, 2020 , Oracle and/or its affiliates. All rights reserved.
3
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
4
*
5
5
* This code is free software; you can redistribute it and/or modify it
@@ -60,12 +60,7 @@ class SimpleScopeDesc : public StackObj {
60
60
class ScopeDesc : public ResourceObj {
61
61
public:
62
62
// Constructor
63
- ScopeDesc (const CompiledMethod* code, int decode_offset, int obj_decode_offset, bool reexecute, bool rethrow_exception, bool return_oop);
64
-
65
- // Calls above, giving default value of "serialized_null" to the
66
- // "obj_decode_offset" argument. (We don't use a default argument to
67
- // avoid a .hpp-.hpp dependency.)
68
- ScopeDesc (const CompiledMethod* code, int decode_offset, bool reexecute, bool rethrow_exception, bool return_oop);
63
+ ScopeDesc (const CompiledMethod* code, PcDesc* pd, bool ignore_objects = false );
69
64
70
65
// Direct access to scope
71
66
ScopeDesc* at_offset (int decode_offset) { return new ScopeDesc (this , decode_offset); }
@@ -76,6 +71,10 @@ class ScopeDesc : public ResourceObj {
76
71
bool should_reexecute () const { return _reexecute; }
77
72
bool rethrow_exception () const { return _rethrow_exception; }
78
73
bool return_oop () const { return _return_oop; }
74
+ // Returns true if one or more NoEscape or ArgEscape objects exist in
75
+ // any of the scopes at compiled pc.
76
+ bool has_ea_local_in_scope () const { return _has_ea_local_in_scope; }
77
+ bool arg_escape () const { return _arg_escape; }
79
78
80
79
GrowableArray<ScopeValue*>* locals ();
81
80
GrowableArray<ScopeValue*>* expressions ();
@@ -105,6 +104,9 @@ class ScopeDesc : public ResourceObj {
105
104
bool _reexecute;
106
105
bool _rethrow_exception;
107
106
bool _return_oop;
107
+ bool _has_ea_local_in_scope; // One or more NoEscape or ArgEscape objects exist in
108
+ // any of the scopes at compiled pc.
109
+ bool _arg_escape; // Compiled Java call in youngest scope passes ArgEscape
108
110
109
111
// Decoding offsets
110
112
int _decode_offset;
0 commit comments