Search in sources :

Example 71 with Source

use of com.oracle.truffle.api.source.Source in project graal by oracle.

the class InstrumentationHandler method addSourceBinding.

<T> EventBinding<T> addSourceBinding(EventBinding.Source<T> binding, boolean notifyLoaded) {
    if (TRACE) {
        trace("BEGIN: Adding source binding %s, %s%n", binding.getFilter(), binding.getElement());
    }
    this.sourceBindings.add(binding);
    this.hasSourceBindings = true;
    if (notifyLoaded) {
        synchronized (sources) {
            lazyInitializeSourcesList();
        }
        for (Source source : sourcesListRef.get()) {
            notifySourceBindingLoaded(binding, source);
        }
    }
    if (TRACE) {
        trace("END: Added source binding %s, %s%n", binding.getFilter(), binding.getElement());
    }
    return binding;
}
Also used : Source(com.oracle.truffle.api.source.Source)

Example 72 with Source

use of com.oracle.truffle.api.source.Source in project graal by oracle.

the class BreakpointSnippets method install.

private void install() {
    assert Thread.holdsLock(this);
    if (sourceBinding == null) {
        SourceFilter filter = locationKey.createSourceFilter();
        final boolean[] sourceResolved = new boolean[] { false };
        sourceBinding = debugger.getInstrumenter().attachExecuteSourceListener(filter, new ExecuteSourceListener() {

            @Override
            public void onExecute(ExecuteSourceEvent event) {
                if (sourceResolved[0]) {
                    return;
                }
                sourceResolved[0] = true;
                synchronized (Breakpoint.this) {
                    if (sourceBinding != null) {
                        sourceBinding.dispose();
                    }
                }
                Source source = event.getSource();
                SourceSection location = locationKey.adjustLocation(source, debugger.getEnv(), suspendAnchor);
                if (location != null) {
                    resolveBreakpoint(location);
                }
                SourceSectionFilter locationFilter = locationKey.createLocationFilter(source, suspendAnchor);
                breakpointBinding = createBinding(locationFilter);
            }
        }, true);
        if (sourceResolved[0]) {
            sourceBinding.dispose();
        }
    } else if (breakpointBinding == null && sourceBinding.isDisposed()) {
        // re-installing breakpoint
        SourceSectionFilter locationFilter = locationKey.createLocationFilter(null, suspendAnchor);
        breakpointBinding = createBinding(locationFilter);
    }
}
Also used : SourceFilter(com.oracle.truffle.api.instrumentation.SourceFilter) ExecuteSourceEvent(com.oracle.truffle.api.instrumentation.ExecuteSourceEvent) ExecuteSourceListener(com.oracle.truffle.api.instrumentation.ExecuteSourceListener) SourceSection(com.oracle.truffle.api.source.SourceSection) SourceSectionFilter(com.oracle.truffle.api.instrumentation.SourceSectionFilter) Source(com.oracle.truffle.api.source.Source)

Example 73 with Source

use of com.oracle.truffle.api.source.Source in project graal by oracle.

the class BreakpointLocation method createSourceFilter.

SourceFilter createSourceFilter() {
    if (key == null) {
        return SourceFilter.ANY;
    }
    SourceFilter.Builder f = SourceFilter.newBuilder();
    if (key instanceof URI) {
        final URI sourceUri = (URI) key;
        f.sourceIs(new Predicate<Source>() {

            @Override
            public boolean test(Source s) {
                URI uri = s.getURI();
                return sourceUri.equals(uri);
            }

            @Override
            public String toString() {
                return "URI equals " + sourceUri;
            }
        });
    } else {
        assert key instanceof Source;
        Source s = (Source) key;
        f.sourceIs(s);
    }
    return f.build();
}
Also used : SourceFilter(com.oracle.truffle.api.instrumentation.SourceFilter) URI(java.net.URI) Source(com.oracle.truffle.api.source.Source)

Example 74 with Source

use of com.oracle.truffle.api.source.Source in project graal by oracle.

the class Debugger method getLoadedSources.

/**
 * Returns a list of all loaded sources. The sources are returned in the order as they have been
 * loaded by the languages.
 *
 * @return an unmodifiable list of sources
 * @since 0.17
 * @deprecated not very flexible, polls all sources without any notification about changes.
 */
@Deprecated
public List<Source> getLoadedSources() {
    final List<Source> sources = new ArrayList<>();
    EventBinding<?> binding = env.getInstrumenter().attachLoadSourceListener(SourceFilter.ANY, new LoadSourceListener() {

        public void onLoad(LoadSourceEvent event) {
            sources.add(event.getSource());
        }
    }, true);
    binding.dispose();
    return Collections.unmodifiableList(sources);
}
Also used : LoadSourceEvent(com.oracle.truffle.api.instrumentation.LoadSourceEvent) ArrayList(java.util.ArrayList) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) LoadSourceListener(com.oracle.truffle.api.instrumentation.LoadSourceListener) Source(com.oracle.truffle.api.source.Source)

Example 75 with Source

use of com.oracle.truffle.api.source.Source in project graal by oracle.

the class DebuggerSessionSnippets method createBinding.

private EventBinding<? extends ExecutionEventNodeFactory> createBinding(boolean includeInternalCode, Predicate<Source> sFilter, ExecutionEventNodeFactory factory, boolean onInput, Class<?>... tags) {
    Builder builder = SourceSectionFilter.newBuilder().tagIs(tags);
    builder.includeInternal(includeInternalCode);
    if (sFilter != null) {
        builder.sourceIs(new SourceSectionFilter.SourcePredicate() {

            @Override
            public boolean test(Source source) {
                return sFilter.test(source);
            }
        });
    }
    SourceSectionFilter ssf = builder.build();
    if (onInput) {
        return debugger.getInstrumenter().attachExecutionEventFactory(ssf, ssf, factory);
    } else {
        return debugger.getInstrumenter().attachExecutionEventFactory(ssf, factory);
    }
}
Also used : Builder(com.oracle.truffle.api.instrumentation.SourceSectionFilter.Builder) SourceSectionFilter(com.oracle.truffle.api.instrumentation.SourceSectionFilter) Source(com.oracle.truffle.api.source.Source)

Aggregations

Source (com.oracle.truffle.api.source.Source)113 Test (org.junit.Test)65 RootNode (com.oracle.truffle.api.nodes.RootNode)23 File (java.io.File)20 InstrumentableNode (com.oracle.truffle.api.instrumentation.InstrumentableNode)16 Node (com.oracle.truffle.api.nodes.Node)16 SourceSection (com.oracle.truffle.api.source.SourceSection)16 ProbeNode (com.oracle.truffle.api.instrumentation.ProbeNode)15 TruffleObject (com.oracle.truffle.api.interop.TruffleObject)11 SourceSectionFilter (com.oracle.truffle.api.instrumentation.SourceSectionFilter)8 IOException (java.io.IOException)8 ArrayList (java.util.ArrayList)7 ByteArrayOutputStream (java.io.ByteArrayOutputStream)6 CallTarget (com.oracle.truffle.api.CallTarget)5 FileWriter (java.io.FileWriter)5 RootCallTarget (com.oracle.truffle.api.RootCallTarget)4 TruffleContext (com.oracle.truffle.api.TruffleContext)3 Params (com.oracle.truffle.tools.chromeinspector.commands.Params)3 CommandProcessException (com.oracle.truffle.tools.chromeinspector.server.CommandProcessException)3 Script (com.oracle.truffle.tools.chromeinspector.types.Script)3