File tree Expand file tree Collapse file tree 2 files changed +15
-4
lines changed
graalpython/com.oracle.graal.python/src/com/oracle/graal/python Expand file tree Collapse file tree 2 files changed +15
-4
lines changed Original file line number Diff line number Diff line change @@ -325,7 +325,8 @@ private RootNode parseWithArguments(ParsingRequest request) {
325
325
CompilerDirectives .transferToInterpreter ();
326
326
final PythonLanguage lang = this ;
327
327
final RootNode executableNode = new RootNode (lang ) {
328
- @ Node .Child private RootNode rootNode ;
328
+ @ Child private RootNode rootNode ;
329
+ @ Child private GilNode gilNode ;
329
330
330
331
protected Object [] preparePArguments (VirtualFrame frame ) {
331
332
int argumentsLength = frame .getArguments ().length ;
@@ -347,9 +348,18 @@ public Object execute(VirtualFrame frame) {
347
348
CompilerDirectives .transferToInterpreterAndInvalidate ();
348
349
parse (context , frame );
349
350
}
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
+ }
353
363
}
354
364
355
365
private void parse (PythonContext context , VirtualFrame frame ) {
Original file line number Diff line number Diff line change @@ -91,6 +91,7 @@ public void setSequenceStorage(SequenceStorage store) {
91
91
this .store = store ;
92
92
}
93
93
94
+ @ Override
94
95
@ ExportMessage .Ignore
95
96
public boolean equals (Object other ) {
96
97
CompilerAsserts .neverPartOfCompilation ();
You can’t perform that action at this time.
0 commit comments