|
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