com.oracle.truffle.api.nodes.Node.getRootNode()方法的使用及代码示例

x33g5p2x  于2022-01-25 转载在 其他  
字(7.2k)|赞(0)|评价(0)|浏览(710)

本文整理了Java中com.oracle.truffle.api.nodes.Node.getRootNode()方法的一些代码示例,展示了Node.getRootNode()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Node.getRootNode()方法的具体详情如下:
包路径:com.oracle.truffle.api.nodes.Node
类名称:Node
方法名:getRootNode

Node.getRootNode介绍

[英]Get the root node of the tree a node belongs to.
[中]获取节点所属树的根节点。

代码示例

代码示例来源:origin: org.graalvm.truffle/truffle-api

  1. /**
  2. * Returns a lock object that can be used to synchronize modifications to the AST. Don't lock if
  3. * you call into foreign code with potential recursions to avoid deadlocks. Use responsibly.
  4. *
  5. * @since 0.19
  6. */
  7. protected final Lock getLock() {
  8. // Major Assumption: parent is never null after a node got adopted
  9. // it is never reset to null, and thus, rootNode is always reachable.
  10. // GIL: used for nodes that are replace in ASTs that are not yet adopted
  11. RootNode root = getRootNode();
  12. return root == null ? GIL_LOCK : root.lock;
  13. }

代码示例来源:origin: com.oracle.truffle/truffle-api

  1. /**
  2. * Returns a lock object that can be used to synchronize modifications to the AST. Don't lock if
  3. * you call into foreign code with potential recursions to avoid deadlocks. Use responsibly.
  4. *
  5. * @since 0.19
  6. */
  7. protected final Lock getLock() {
  8. // Major Assumption: parent is never null after a node got adopted
  9. // it is never reset to null, and thus, rootNode is always reachable.
  10. // GIL: used for nodes that are replace in ASTs that are not yet adopted
  11. RootNode root = getRootNode();
  12. return root == null ? GIL_LOCK : root.lock;
  13. }

代码示例来源:origin: com.oracle.truffle/truffle-api

  1. DefaultScopeVariables(Node node) {
  2. this.root = node.getRootNode();
  3. }

代码示例来源:origin: com.oracle/truffle

  1. public String displayMethodName(Node node) {
  2. if (node == null) {
  3. return null;
  4. }
  5. RootNode root = node.getRootNode();
  6. if (root == null) {
  7. return "unknown";
  8. }
  9. return root.getCallTarget().toString();
  10. }

代码示例来源:origin: com.oracle/truffle

  1. public final void atomic(Runnable closure) {
  2. RootNode rootNode = getRootNode();
  3. synchronized (rootNode != null ? rootNode : GIL) {
  4. assert enterAtomic();
  5. try {
  6. closure.run();
  7. } finally {
  8. assert exitAtomic();
  9. }
  10. }
  11. }

代码示例来源:origin: org.graalvm.truffle/truffle-api

  1. private static TruffleLanguage.Env getLangEnv(Node node) {
  2. LanguageInfo languageInfo = node.getRootNode().getLanguageInfo();
  3. if (languageInfo == null) {
  4. throw new IllegalArgumentException("No language available for given node.");
  5. }
  6. return AccessorInstrumentHandler.engineAccess().getEnvForInstrument(languageInfo);
  7. }

代码示例来源:origin: com.oracle.truffle/truffle-api

  1. private static TruffleLanguage.Env getLangEnv(Node node) {
  2. LanguageInfo languageInfo = node.getRootNode().getLanguageInfo();
  3. if (languageInfo == null) {
  4. throw new IllegalArgumentException("No language available for given node.");
  5. }
  6. return AccessorInstrumentHandler.engineAccess().getEnvForInstrument(languageInfo);
  7. }

代码示例来源:origin: org.graalvm.truffle/truffle-api

  1. private static Set<Class<?>> getProvidedTags(Node node) {
  2. Objects.requireNonNull(node);
  3. RootNode root = node.getRootNode();
  4. if (root == null) {
  5. return Collections.emptySet();
  6. }
  7. Object sourceVM = InstrumentationHandler.AccessorInstrumentHandler.nodesAccess().getSourceVM(root);
  8. if (sourceVM == null) {
  9. return Collections.emptySet();
  10. }
  11. InstrumentationHandler handler = (InstrumentationHandler) InstrumentationHandler.AccessorInstrumentHandler.engineAccess().getInstrumentationHandler(sourceVM);
  12. return handler.getProvidedTags(node);
  13. }

代码示例来源:origin: org.graalvm.truffle/truffle-api

  1. RootNode findCurrentRoot() {
  2. Node node = traceElement.getLocation();
  3. if (node != null) {
  4. return node.getRootNode();
  5. }
  6. RootCallTarget target = traceElement.getTarget();
  7. return target.getRootNode();
  8. }

代码示例来源:origin: org.graalvm.truffle/truffle-api

  1. public String getRootName() {
  2. RootNode rootNode = context.getInstrumentedNode().getRootNode();
  3. if (rootNode == null) {
  4. // defensive check
  5. return null;
  6. }
  7. try {
  8. return rootNode.getName();
  9. } catch (Throwable t) {
  10. throw wrapHostError(t);
  11. }
  12. }

代码示例来源:origin: org.graalvm.tools/profiler

  1. private static String extractRootName(Node instrumentedNode) {
  2. RootNode rootNode = instrumentedNode.getRootNode();
  3. if (rootNode != null) {
  4. if (rootNode.getName() == null) {
  5. return rootNode.toString();
  6. } else {
  7. return rootNode.getName();
  8. }
  9. } else {
  10. return "<Unknown>";
  11. }
  12. }

代码示例来源:origin: org.graalvm.truffle/truffle-api

  1. Set<Class<?>> getProvidedTags(Node root) {
  2. return getProvidedTags(AccessorInstrumentHandler.nodesAccess().getLanguage(root.getRootNode()));
  3. }

代码示例来源:origin: com.oracle.truffle/truffle-debug

  1. @Override
  2. protected void onDispose(VirtualFrame frame) {
  3. FrameDescriptor frameDescriptor = context.getInstrumentedNode().getRootNode().getFrameDescriptor();
  4. if (frameDescriptor.getIdentifiers().contains(KEY_TIME_STARTED)) {
  5. frameDescriptor.removeFrameSlot(KEY_TIME_STARTED);
  6. }
  7. if (frameDescriptor.getIdentifiers().contains(KEY_PARENT_COUNTER)) {
  8. frameDescriptor.removeFrameSlot(KEY_PARENT_COUNTER);
  9. }
  10. }

代码示例来源:origin: com.oracle.truffle/truffle-debug

  1. private ExecutionEventNode createCountingNode(EventContext context) {
  2. SourceSection sourceSection = context.getInstrumentedSourceSection();
  3. Counter counter = counters.get(sourceSection);
  4. if (counter == null) {
  5. final RootNode rootNode = context.getInstrumentedNode().getRootNode();
  6. counter = new Counter(sourceSection, rootNode == null ? "<unknown>>" : rootNode.getName());
  7. counters.put(sourceSection, counter);
  8. }
  9. if (isTiming) {
  10. return TimedCounterNode.create(this, counter, context);
  11. } else {
  12. return new CounterNode(this, counter);
  13. }
  14. }

代码示例来源:origin: com.oracle.truffle/truffle-debug

  1. TimedCounterNode(Profiler profiler, Counter counter, EventContext context) {
  2. super(profiler, counter);
  3. this.context = context;
  4. FrameDescriptor frameDescriptor = context.getInstrumentedNode().getRootNode().getFrameDescriptor();
  5. this.timeStartedSlot = frameDescriptor.findOrAddFrameSlot(KEY_TIME_STARTED, "profiler:timeStarted", FrameSlotKind.Long);
  6. this.parentCounterSlot = frameDescriptor.findOrAddFrameSlot(KEY_PARENT_COUNTER, "profiler:parentCounter", FrameSlotKind.Object);
  7. }

代码示例来源:origin: org.graalvm.compiler/compiler

  1. @Override
  2. protected void reportPolymorphicSpecialize(Node source) {
  3. if (TruffleRuntimeOptions.getValue(SharedTruffleRuntimeOptions.TruffleExperimentalSplitting)) {
  4. TruffleSplittingStrategy.newPolymorphicSpecialize(source);
  5. final RootNode rootNode = source.getRootNode();
  6. final OptimizedCallTarget callTarget = rootNode == null ? null : (OptimizedCallTarget) rootNode.getCallTarget();
  7. if (callTarget != null) {
  8. callTarget.polymorphicSpecialize(source);
  9. }
  10. }
  11. }
  12. }

代码示例来源:origin: com.oracle.truffle/truffle-api

  1. static Iterable<Scope> lexicalScope(Node node, Frame frame) {
  2. RootNode root = node.getRootNode();
  3. String name = root.getName();
  4. if (name == null) {
  5. name = "local";
  6. }
  7. return Collections.singletonList(Scope.newBuilder(name, getVariables(root, frame)).node(root).arguments(getArguments(frame)).build());
  8. }

代码示例来源:origin: org.graalvm.truffle/truffle-api

  1. static Iterable<Scope> lexicalScope(Node node, Frame frame) {
  2. RootNode root = node.getRootNode();
  3. String name = root.getName();
  4. if (name == null) {
  5. name = "local";
  6. }
  7. return Collections.singletonList(Scope.newBuilder(name, getVariables(root, frame)).node(root).arguments(getArguments(frame)).build());
  8. }

代码示例来源:origin: com.oracle.truffle/truffle-api

  1. protected CallTarget parse(Source code, Node context, String... argumentNames) {
  2. RootNode rootNode = context.getRootNode();
  3. return languageSupport().parse(engineSupport().getEnvForInstrument(rootNode.getLanguageInfo()), code, context, argumentNames);
  4. }

代码示例来源:origin: org.graalvm.truffle/truffle-api

  1. protected CallTarget parse(Source code, Node context, String... argumentNames) {
  2. RootNode rootNode = context.getRootNode();
  3. return languageSupport().parse(engineSupport().getEnvForInstrument(rootNode.getLanguageInfo()), code, context, argumentNames);
  4. }

相关文章