SourceSectionFilter.Builder filterBuilder = SourceSectionFilter.newBuilder().tagIs(tags.toArray(new Class<?>[0])); filterBuilder.includeInternal(false); filterBuilder.sourceIs(new SourcePredicate() { public boolean test(com.oracle.truffle.api.source.Source s) { String language = s.getLanguage(); filterBuilder.rootNameIs(new Predicate<String>() { public boolean test(String s) { try { SourceSectionFilter filter = filterBuilder.build(); EventBinding<?> binding; try {
/** * Add a filter for all source sections where the column is inside a startColumn (first * index inclusive) plus a given length (last index exclusive). * * @param startColumn the start column (inclusive) * @param length the number of matched columns * @return the builder to chain calls * @since 0.33 */ public Builder columnIn(int startColumn, int length) { if (startColumn < 1) { throw new IllegalArgumentException(String.format("Start line indices must be >= 1 but were %s.", startColumn)); } return columnIn(IndexRange.byLength(startColumn, length)); }
SourceSectionFilter.Builder builder = SourceSectionFilter.newBuilder(); if (!internals || filterFile != null || filterLanguage != null) { builder.sourceIs(new SourceSectionFilter.SourcePredicate() { @Override public boolean test(Source source) { "No elements specified. Either roots, statements or calls must remain enabled."); builder.tagIs(tags.toArray(new Class<?>[0])); builder.rootNameIs(new Predicate<String>() { @Override public boolean test(String s) { return builder.build();
SourceSectionFilter createLocationFilter(Source source, SuspendAnchor suspendAnchor) { SourceSectionFilter.Builder f = SourceSectionFilter.newBuilder(); if (key == null) { return f.tagIs(DebuggerTags.AlwaysHalt.class).build(); f.sourceIs(source); } else { f.sourceFilter(createSourceFilter()); f.lineStartsIn(IndexRange.byLength(line, 1)); if (column != -1) { f.columnStartsIn(IndexRange.byLength(column, 1)); f.lineEndsIn(IndexRange.byLength(line, 1)); if (column != -1) { f.columnEndsIn(IndexRange.byLength(column, 1)); f.sourceSectionEquals(sourceSection); elementTags[i] = sourceElements[i].getTag(); f.tagIs(elementTags); return f.build();
SourceSectionFilter.Builder f = SourceSectionFilter.newBuilder(); if (key == null) { return f.tagIs(DebuggerTags.AlwaysHalt.class).build(); f.sourceIs(source); } else { f.sourceFilter(createSourceFilter()); f.lineStartsIn(IndexRange.byLength(line, 1)); if (column != -1) { f.columnStartsIn(IndexRange.byLength(column, 1)); f.lineEndsIn(IndexRange.byLength(line, 1)); if (column != -1) { f.columnEndsIn(IndexRange.byLength(column, 1)); f.sourceSectionEquals(sourceSection); return f.build();
/** * Creates a new {@link SourceSectionFilter} expression using a {@link Builder builder} pattern. * Individual builder statements are interpreted as conjunctions (AND) while multiple parameters * for individual filter expressions are treated as disjunctions (OR). To create the final * filter finalize the expression using {@link Builder#build()}. * * @see Builder#sourceIs(Source...) * @see Builder#mimeTypeIs(String...) * @see Builder#tagIs(Class...) * @see Builder#tagIsNot(Class...) * @see Builder#sourceSectionEquals(SourceSection...) * @see Builder#indexIn(int, int) * @see Builder#lineIn(int, int) * @see Builder#lineIs(int) * @see Builder#rootNameIs(Predicate) * @see Builder#build() * * @return a new builder to create new {@link SourceSectionFilter} instances * @since 0.12 */ public static Builder newBuilder() { return new SourceSectionFilter(null).new Builder(); }
/** * Creates a new {@link SourceSectionFilter} expression using a {@link Builder builder} pattern. * Individual builder statements are interpreted as conjunctions (AND) while multiple parameters * for individual filter expressions are treated as disjunctions (OR). To create the final * filter finalize the expression using {@link Builder#build()}. * * @see Builder#sourceIs(Source...) * @see Builder#mimeTypeIs(String...) * @see Builder#tagIs(Class...) * @see Builder#tagIsNot(Class...) * @see Builder#sourceSectionEquals(SourceSection...) * @see Builder#indexIn(int, int) * @see Builder#lineIn(int, int) * @see Builder#lineIs(int) * @see Builder#rootNameIs(Predicate) * @see Builder#build() * * @return a new builder to create new {@link SourceSectionFilter} instances * @since 0.12 */ public static Builder newBuilder() { return new SourceSectionFilter(null).new Builder(); }
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); } }
private void reset() { if (binding != null) { binding.dispose(); binding = null; } if (isCollecting) { final Builder filterBuilder = SourceSectionFilter.newBuilder(); if (mimeTypes != null) { filterBuilder.mimeTypeIs(mimeTypes); } final SourceSectionFilter filter = filterBuilder.tagIs(StandardTags.RootTag.class).sourceIs(notInternal).build(); binding = instrumenter.attachExecutionEventFactory(filter, new ExecutionEventNodeFactory() { public ExecutionEventNode create(EventContext context) { return createCountingNode(context); } }); } }
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); } }
@Override SourceSectionFilter createLocationFilter(Source source, SuspendAnchor suspendAnchor) { SourceSectionFilter.Builder f = SourceSectionFilter.newBuilder(); SourceFilter.Builder sourceFilterBuilder = SourceFilter.newBuilder(); if (filter != null) { Predicate<Source> sourcePredicate = filter.getSourcePredicate(); if (sourcePredicate != null) { sourceFilterBuilder.sourceIs(sourcePredicate); } sourceFilterBuilder.includeInternal(filter.isInternalIncluded()); } SourceFilter sourceFilter = sourceFilterBuilder.build(); f.sourceFilter(sourceFilter); setTags(f, sourceElements); return f.build(); }
/** * Add a filter for all source sections where the column is inside a startColumn (first * index inclusive) plus a given length (last index exclusive). * * @param startColumn the start column (inclusive) * @param length the number of matched columns * @return the builder to chain calls * @since 0.33 */ public Builder columnIn(int startColumn, int length) { if (startColumn < 1) { throw new IllegalArgumentException(String.format("Start line indices must be >= 1 but were %s.", startColumn)); } return columnIn(IndexRange.byLength(startColumn, length)); }
@Override public <T extends ExecuteSourceListener> EventBinding<T> attachExecuteSourceListener(SourceFilter filter, T listener, boolean notifyLoaded) { SourceSectionFilter sectionsFilter = SourceSectionFilter.newBuilder().sourceFilter(filter).build(); return InstrumentationHandler.this.attachExecuteSourceListener(this, sectionsFilter, listener, notifyLoaded); }
@Override public <T extends LoadSourceListener> EventBinding<T> attachLoadSourceListener(SourceFilter filter, T listener, boolean notifyLoaded) { SourceSectionFilter sectionsFilter = SourceSectionFilter.newBuilder().sourceFilter(filter).build(); return attachLoadSourceListener(sectionsFilter, listener, notifyLoaded); }
/** * Add a filter for all source sections where the index is inside a startIndex (inclusive) * plus a given length (exclusive). * * @param startIndex the start index (inclusive) * @param length the number of matched characters * @return the builder to chain calls * @since 0.12 */ public Builder indexIn(int startIndex, int length) { return indexIn(IndexRange.byLength(startIndex, length)); }
@Override public <T extends LoadSourceListener> EventBinding<T> attachLoadSourceListener(SourceFilter filter, T listener, boolean notifyLoaded) { SourceSectionFilter sectionsFilter = SourceSectionFilter.newBuilder().sourceFilter(filter).build(); return attachLoadSourceListener(sectionsFilter, listener, notifyLoaded); }
/** * Add a filter for all source sections where the index is inside a startIndex (inclusive) * plus a given length (exclusive). * * @param startIndex the start index (inclusive) * @param length the number of matched characters * @return the builder to chain calls * @since 0.12 */ public Builder indexIn(int startIndex, int length) { return indexIn(IndexRange.byLength(startIndex, length)); }
private static SourceSectionFilter combine(SourceSectionFilter filter, Mode mode) { List<Class<?>> tags = new ArrayList<>(); tags.add(StandardTags.RootTag.class); if (mode == Mode.STATEMENTS) { tags.add(StandardTags.StatementTag.class); } return SourceSectionFilter.newBuilder().tagIs(tags.toArray(new Class<?>[0])).and(filter).build(); }