Skip to content

Commit 87ade01

Browse files
committed
Add profile for condition if frame values should be refreshed.
1 parent 90c726c commit 87ade01

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/nodes/frame/MaterializeFrameNode.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -142,9 +142,10 @@ static PFrame incompleteFrame(VirtualFrame frame, Node location, boolean markAsE
142142

143143
@Specialization(guards = {"getPFrame(frameToMaterialize) != null", "getPFrame(frameToMaterialize).hasFrame()"}, replaces = "freshPFrame")
144144
static PFrame alreadyEscapedFrame(VirtualFrame frame, Node location, boolean markAsEscaped, boolean forceSync, Frame frameToMaterialize,
145-
@Shared("syncValuesNode") @Cached SyncFrameValuesNode syncValuesNode) {
145+
@Shared("syncValuesNode") @Cached SyncFrameValuesNode syncValuesNode,
146+
@Cached("createBinaryProfile()") ConditionProfile syncProfile) {
146147
PFrame pyFrame = getPFrame(frameToMaterialize);
147-
if (forceSync && !inClassBody(frameToMaterialize) && !inModuleRoot(location)) {
148+
if (syncProfile.profile(forceSync && !inClassBody(frameToMaterialize) && !inModuleRoot(location))) {
148149
syncValuesNode.execute(frame, pyFrame, frameToMaterialize);
149150
}
150151
if (markAsEscaped) {
@@ -158,9 +159,10 @@ static PFrame alreadyEscapedFrame(VirtualFrame frame, Node location, boolean mar
158159
@Specialization(replaces = {"freshPFrame", "alreadyEscapedFrame"})
159160
static PFrame notInClassBody(VirtualFrame frame, Node location, boolean markAsEscaped, boolean forceSync, Frame frameToMaterialize,
160161
@Shared("factory") @Cached PythonObjectFactory factory,
161-
@Shared("syncValuesNode") @Cached SyncFrameValuesNode syncValuesNode) {
162+
@Shared("syncValuesNode") @Cached SyncFrameValuesNode syncValuesNode,
163+
@Cached("createBinaryProfile()") ConditionProfile syncProfile) {
162164
if (getPFrame(frameToMaterialize) != null) {
163-
return alreadyEscapedFrame(frame, location, markAsEscaped, forceSync, frameToMaterialize, syncValuesNode);
165+
return alreadyEscapedFrame(frame, location, markAsEscaped, forceSync, frameToMaterialize, syncValuesNode, syncProfile);
164166
} else {
165167
if (inClassBody(frameToMaterialize)) {
166168
return freshPFrameInClassBody(frame, location, markAsEscaped, forceSync, frameToMaterialize, factory, syncValuesNode);

0 commit comments

Comments
 (0)