if (!LANGUAGE.isThreadAccessAllowed(context.env, current, false)) { accessAllowed = false; if (!LANGUAGE.isThreadAccessAllowed(context.env, seenThread.thread, false)) { accessAllowed = false; break;
private void checkThreadAccess(Env localEnv) { assert Thread.holdsLock(context); boolean singleThreaded = context.isSingleThreaded(); Thread firstFailingThread = null; for (PolyglotThreadInfo threadInfo : context.getSeenThreads().values()) { if (!LANGUAGE.isThreadAccessAllowed(localEnv, threadInfo.thread, singleThreaded)) { firstFailingThread = threadInfo.thread; break; } } if (firstFailingThread != null) { throw PolyglotContextImpl.throwDeniedThreadAccess(firstFailingThread, singleThreaded, Arrays.asList(language)); } }
private void checkAllThreadAccesses() { Thread current = Thread.currentThread(); List<PolyglotLanguage> deniedLanguages = null; for (PolyglotLanguageContext context : contexts) { if (!context.isInitialized()) { continue; } boolean accessAllowed = true; if (!LANGUAGE.isThreadAccessAllowed(context.language.info, current, false)) { accessAllowed = false; } if (accessAllowed) { for (PolyglotThreadInfo seenThread : threads.values()) { if (!LANGUAGE.isThreadAccessAllowed(context.language.info, seenThread.thread, false)) { accessAllowed = false; break; } } } if (!accessAllowed) { if (deniedLanguages == null) { deniedLanguages = new ArrayList<>(); } deniedLanguages.add(context.language); } } if (deniedLanguages != null) { throw throwDeniedThreadAccess(current, false, deniedLanguages); } }
Thread firstFailingThread = null; for (PolyglotThreadInfo threadInfo : context.getSeenThreads().values()) { if (!LANGUAGE.isThreadAccessAllowed(language.info, threadInfo.thread, singleThreaded)) { firstFailingThread = threadInfo.thread; break;
private PolyglotThreadInfo createThreadInfo(Thread current) { assert Thread.holdsLock(this); PolyglotThreadInfo threadInfo = new PolyglotThreadInfo(current); boolean singleThread = isSingleThreaded(); List<PolyglotLanguage> deniedLanguages = null; for (PolyglotLanguageContext context : contexts) { if (context.isInitialized()) { if (!VMAccessor.LANGUAGE.isThreadAccessAllowed(context.env, current, singleThread)) { if (deniedLanguages == null) { deniedLanguages = new ArrayList<>(); } deniedLanguages.add(context.language); } } } if (deniedLanguages != null) { throw throwDeniedThreadAccess(current, singleThread, deniedLanguages); } return threadInfo; }
private PolyglotThreadInfo createThreadInfo(Thread current) { assert Thread.holdsLock(this); PolyglotThreadInfo threadInfo = new PolyglotThreadInfo(current); boolean singleThread = isSingleThreaded(); List<PolyglotLanguage> deniedLanguages = null; for (PolyglotLanguageContext context : contexts) { if (context.isInitialized()) { if (!VMAccessor.LANGUAGE.isThreadAccessAllowed(context.language.info, current, singleThread)) { if (deniedLanguages == null) { deniedLanguages = new ArrayList<>(); } deniedLanguages.add(context.language); } } } if (deniedLanguages != null) { throw throwDeniedThreadAccess(current, singleThread, deniedLanguages); } return threadInfo; }