Skip to content

Commit 2b6d1d7

Browse files
committed
PythonLanguage: missing GilNode acquire in parseWithArguments
1 parent 9a29762 commit 2b6d1d7

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/PythonLanguage.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,8 @@ private RootNode parseWithArguments(ParsingRequest request) {
325325
CompilerDirectives.transferToInterpreter();
326326
final PythonLanguage lang = this;
327327
final RootNode executableNode = new RootNode(lang) {
328-
@Node.Child private RootNode rootNode;
328+
@Child private RootNode rootNode;
329+
@Child private GilNode gilNode;
329330

330331
protected Object[] preparePArguments(VirtualFrame frame) {
331332
int argumentsLength = frame.getArguments().length;
@@ -347,9 +348,18 @@ public Object execute(VirtualFrame frame) {
347348
CompilerDirectives.transferToInterpreterAndInvalidate();
348349
parse(context, frame);
349350
}
350-
Object[] args = preparePArguments(frame);
351-
Object result = InvokeNode.invokeUncached(rootNode.getCallTarget(), args);
352-
return result;
351+
if (gilNode == null) {
352+
CompilerDirectives.transferToInterpreterAndInvalidate();
353+
gilNode = insert(GilNode.create());
354+
}
355+
boolean wasAcquired = gilNode.acquire();
356+
try {
357+
Object[] args = preparePArguments(frame);
358+
Object result = InvokeNode.invokeUncached(rootNode.getCallTarget(), args);
359+
return result;
360+
} finally {
361+
gilNode.release(wasAcquired);
362+
}
353363
}
354364

355365
private void parse(PythonContext context, VirtualFrame frame) {

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/tuple/PTuple.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ public void setSequenceStorage(SequenceStorage store) {
9191
this.store = store;
9292
}
9393

94+
@Override
9495
@ExportMessage.Ignore
9596
public boolean equals(Object other) {
9697
CompilerAsserts.neverPartOfCompilation();

0 commit comments

Comments
 (0)