Mercurial > hg > graal-compiler
view graal/com.oracle.truffle.api/src/com/oracle/truffle/api/impl/AbstractExecutionContext.java @ 15279:0c6d8a08e31b
Truffle: Major cleanup and extension of the Truffle Instrumentation framework in com.oracle.truffle.api
author | Michael Van De Vanter <michael.van.de.vanter@oracle.com> |
---|---|
date | Sun, 20 Apr 2014 20:37:27 -0700 |
parents | |
children | be0c151d912b |
line wrap: on
line source
/* * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided * by Oracle in the LICENSE file that accompanied this code. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ package com.oracle.truffle.api.impl; import com.oracle.truffle.api.*; import com.oracle.truffle.api.instrument.*; import com.oracle.truffle.api.instrument.impl.*; import com.oracle.truffle.api.source.*; public abstract class AbstractExecutionContext implements ExecutionContext { private final SourceManager sourceManager = new SourceManager(); private final Instrumentation instrumentation; private Visualizer visualizer = new DefaultVisualizer(); protected ASTProber astProber = null; protected AbstractExecutionContext() { this.instrumentation = InstrumentationFactory.create(this); } public final SourceManager getSourceManager() { return sourceManager; } public final Instrumentation instrumentation() { return instrumentation; } public Visualizer visualizer() { return visualizer; } public void addNodeProber(ASTNodeProber nodeProber) { if (astProber == null) { throw new IllegalStateException("No ASTProber installed in context"); } astProber.addNodeProber(nodeProber); } /** * Assign guest language-specific visualization support for tools. This must be assigned outside * the implementation context to avoid build circularities. */ public void setVisualizer(Visualizer visualizer) { this.visualizer = visualizer; } /** * Assigns a guest language-specific manager for using {@link ASTNodeProber}s added by tools to * instrument ASTs with {@link Probe}s at specified nodes. This must be assigned outside the * implementation context to avoid build circularities. It must also be set before any * instrumentation probe implementations are assigned. */ public void setASTProber(ASTProber astProber) { this.astProber = astProber; } /** * Gets a guest language-specific {@link ASTNodeProber} that will apply all that have been * added; {@code null} if no instrumentation in AST. */ public ASTNodeProber getCombinedNodeProber() { return astProber == null ? null : astProber.getCombinedNodeProber(); } public abstract void setInstrumentEventListener(InstrumentEventListener listener); public abstract InstrumentEventListener getInstrumentEventListener(); }