|
36 | 36 | import java.text.MessageFormat; |
37 | 37 | import java.util.HashMap; |
38 | 38 | import java.util.concurrent.atomic.AtomicLong; |
39 | | -import java.util.concurrent.locks.Lock; |
40 | 39 | import java.util.concurrent.locks.ReentrantLock; |
41 | 40 | import java.util.function.Supplier; |
42 | 41 |
|
43 | | -import com.oracle.truffle.api.TruffleFile; |
44 | 42 | import org.graalvm.nativeimage.ImageInfo; |
45 | 43 | import org.graalvm.options.OptionValues; |
46 | 44 |
|
|
50 | 48 | import com.oracle.graal.python.builtins.objects.cext.PythonNativeClass; |
51 | 49 | import com.oracle.graal.python.builtins.objects.common.HashingStorage; |
52 | 50 | import com.oracle.graal.python.builtins.objects.dict.PDict; |
53 | | -import com.oracle.graal.python.builtins.objects.list.PList; |
54 | 51 | import com.oracle.graal.python.builtins.objects.frame.PFrame; |
| 52 | +import com.oracle.graal.python.builtins.objects.list.PList; |
55 | 53 | import com.oracle.graal.python.builtins.objects.module.PythonModule; |
56 | 54 | import com.oracle.graal.python.builtins.objects.str.PString; |
57 | 55 | import com.oracle.graal.python.nodes.SpecialAttributeNames; |
|
63 | 61 | import com.oracle.truffle.api.CompilerDirectives.CompilationFinal; |
64 | 62 | import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary; |
65 | 63 | import com.oracle.truffle.api.Truffle; |
| 64 | +import com.oracle.truffle.api.TruffleFile; |
66 | 65 | import com.oracle.truffle.api.TruffleLanguage; |
67 | 66 | import com.oracle.truffle.api.TruffleLanguage.Env; |
68 | 67 | import com.oracle.truffle.api.frame.VirtualFrame; |
@@ -119,7 +118,7 @@ public final class PythonContext { |
119 | 118 | private static final Assumption singleNativeContext = Truffle.getRuntime().createAssumption("single native context assumption"); |
120 | 119 |
|
121 | 120 | /* A lock for interop calls when this context is used by multiple threads. */ |
122 | | - private Lock interopLock; |
| 121 | + private ReentrantLock interopLock; |
123 | 122 |
|
124 | 123 | @CompilationFinal private HashingStorage.Equivalence slowPathEquivalence; |
125 | 124 |
|
@@ -604,7 +603,9 @@ public void acquireInteropLock() { |
604 | 603 |
|
605 | 604 | @TruffleBoundary |
606 | 605 | public void releaseInteropLock() { |
607 | | - interopLock.unlock(); |
| 606 | + if (interopLock.isLocked()) { |
| 607 | + interopLock.unlock(); |
| 608 | + } |
608 | 609 | } |
609 | 610 |
|
610 | 611 | @TruffleBoundary |
|
0 commit comments