private static Set<Class<?>> getProvidedTags(Node node) { Objects.requireNonNull(node); RootNode root = node.getRootNode(); if (root == null) { return Collections.emptySet(); } Object sourceVM = InstrumentationHandler.AccessorInstrumentHandler.nodesAccess().getSourceVM(root); if (sourceVM == null) { return Collections.emptySet(); } InstrumentationHandler handler = (InstrumentationHandler) InstrumentationHandler.AccessorInstrumentHandler.engineAccess().getInstrumentationHandler(sourceVM); return handler.getProvidedTags(node); }
protected <T> T getOrCreateRuntimeData(RootNode rootNode, Supplier<T> constructor) { Objects.requireNonNull(constructor); final Accessor.Nodes nodesAccess = Accessor.nodesAccess(); final EngineSupport engineAccess = Accessor.engineAccess(); if (rootNode != null && nodesAccess != null && engineAccess != null) { final Object sourceVM = nodesAccess.getSourceVM(rootNode); if (sourceVM != null) { final T runtimeData = engineAccess.getOrCreateRuntimeData(sourceVM, constructor); if (runtimeData != null) { return runtimeData; } } } return getOrCreateFallbackEngineData(constructor); }
protected <T> T getOrCreateRuntimeData(RootNode rootNode, Supplier<T> constructor) { Objects.requireNonNull(constructor); final Accessor.Nodes nodesAccess = Accessor.nodesAccess(); final EngineSupport engineAccess = Accessor.engineAccess(); if (rootNode != null && nodesAccess != null && engineAccess != null) { final Object sourceVM = nodesAccess.getSourceVM(rootNode); if (sourceVM != null) { final T runtimeData = engineAccess.getOrCreateRuntimeData(sourceVM, constructor); if (runtimeData != null) { return runtimeData; } } } return getOrCreateFallbackEngineData(constructor); }
@Override public OptionValues getCompilerOptionValues(RootNode rootNode) { Object vm = NODES.getSourceVM(rootNode); if (vm instanceof PolyglotEngineImpl) { return ((PolyglotEngineImpl) vm).compilerOptionValues; } return null; }
@Override public OptionValues getCompilerOptionValues(RootNode rootNode) { Object vm = NODES.getSourceVM(rootNode); if (vm instanceof PolyglotEngineImpl) { return ((PolyglotEngineImpl) vm).compilerOptionValues; } return null; }