Skip to content

Commit 1a86bd7

Browse files
committed
Also handle class body case in generic specialization.
1 parent 426c01d commit 1a86bd7

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,14 +148,18 @@ static PFrame alreadyEscapedFrame(VirtualFrame frame, Node location, boolean mar
148148
return pyFrame;
149149
}
150150

151-
@Specialization(guards = {"!inClassBody(frameToMaterialize)"}, replaces = {"freshPFrame", "alreadyEscapedFrame"})
151+
@Specialization(replaces = {"freshPFrame", "alreadyEscapedFrame"})
152152
static PFrame notInClassBody(VirtualFrame frame, Node location, boolean markAsEscaped, boolean forceSync, Frame frameToMaterialize,
153153
@Shared("factory") @Cached PythonObjectFactory factory,
154154
@Shared("syncValuesNode") @Cached SyncFrameValuesNode syncValuesNode) {
155155
if (getPFrame(frameToMaterialize) != null) {
156156
return alreadyEscapedFrame(frame, location, markAsEscaped, forceSync, frameToMaterialize, syncValuesNode);
157157
} else {
158-
return freshPFrame(frame, location, markAsEscaped, forceSync, frameToMaterialize, factory, syncValuesNode);
158+
if (inClassBody(frameToMaterialize)) {
159+
return freshPFrameInClassBody(frame, location, markAsEscaped, forceSync, frameToMaterialize, factory, syncValuesNode);
160+
} else {
161+
return freshPFrame(frame, location, markAsEscaped, forceSync, frameToMaterialize, factory, syncValuesNode);
162+
}
159163
}
160164
}
161165

0 commit comments

Comments
 (0)