Skip to content

Commit 9e79c0b

Browse files
committed
Fix PE bug in CodeNodes
1 parent 28ed0b1 commit 9e79c0b

File tree

2 files changed

+7
-10
lines changed

2 files changed

+7
-10
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/code/CodeNodes.java

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -229,15 +229,14 @@ public abstract static class GetCodeSignatureNode extends PNodeWithContext {
229229

230230
@Specialization(guards = {"cachedCode == code", "isSingleContext(inliningTarget)"}, limit = "2")
231231
static Signature doCached(Node inliningTarget, @SuppressWarnings("unused") PCode code,
232-
@Cached("code") PCode cachedCode,
233-
@Cached InlinedBranchProfile firstExecution) {
234-
return getInSingleContextMode(inliningTarget, cachedCode, firstExecution);
232+
@Cached("code") PCode cachedCode) {
233+
return getInSingleContextMode(inliningTarget, cachedCode);
235234
}
236235

237236
public static Signature getInSingleContextMode(Node inliningTarget, PFunction fun, InlinedBranchProfile firstExecution) {
238237
assert isSingleContext(inliningTarget);
239-
if (CompilerDirectives.inCompiledCode() && CompilerDirectives.isPartialEvaluationConstant(fun) && fun.getCodeStableAssumption().isValid()) {
240-
getInSingleContextMode(inliningTarget, fun.getCode(), firstExecution);
238+
if (CompilerDirectives.inCompiledCode() && CompilerDirectives.isPartialEvaluationConstant(fun.getCode())) {
239+
getInSingleContextMode(inliningTarget, fun.getCode());
241240
}
242241
PCode code = fun.getCode();
243242
Signature signature = code.signature;
@@ -249,12 +248,11 @@ public static Signature getInSingleContextMode(Node inliningTarget, PFunction fu
249248
return signature;
250249
}
251250

252-
public static Signature getInSingleContextMode(Node inliningTarget, PCode code, InlinedBranchProfile firstExecution) {
251+
public static Signature getInSingleContextMode(Node inliningTarget, PCode code) {
253252
assert isSingleContext(inliningTarget);
254253
CompilerAsserts.partialEvaluationConstant(code);
255-
if (!firstExecution.wasEntered(inliningTarget)) {
256-
firstExecution.enter(inliningTarget);
257-
CompilerDirectives.transferToInterpreter();
254+
if (code.signature == null) {
255+
CompilerDirectives.transferToInterpreterAndInvalidate();
258256
code.initializeSignature(code.initializeCallTarget());
259257
}
260258
return code.signature;

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/nodes/argument/CreateArgumentsNode.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,6 @@ Object[] doFunctionCached(PFunction callable, Object[] userArguments, PKeyword[]
166166
@Cached InlinedBranchProfile firstExecution,
167167
@Cached(value = "callable", weak = true) @SuppressWarnings("unused") PFunction cachedCallable) {
168168

169-
PCode code = callable.getCode();
170169
Signature signature = CodeNodes.GetCodeSignatureNode.getInSingleContextMode(inliningTarget, callable, firstExecution);
171170
Object[] defaults = cachedCallable.getDefaults();
172171
PKeyword[] kwdefaults = cachedCallable.getKwDefaults();

0 commit comments

Comments
 (0)