# HG changeset patch # User David Piorkowski # Date 1409102551 25200 # Node ID e01b0b9a5f886f8810ba09668632acd675cccf76 # Parent a09bee2c1054c7d0ba866e5babf70f9f61820cc9 SL/Instrumentation: Fixing SLContext to use SLInstrumenter diff -r a09bee2c1054 -r e01b0b9a5f88 graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/runtime/SLContext.java --- a/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/runtime/SLContext.java Tue Aug 26 15:48:37 2014 -0700 +++ b/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/runtime/SLContext.java Tue Aug 26 18:22:31 2014 -0700 @@ -23,6 +23,7 @@ package com.oracle.truffle.sl.runtime; import java.io.*; +import java.util.*; import com.oracle.truffle.api.*; import com.oracle.truffle.api.dsl.*; @@ -33,6 +34,7 @@ import com.oracle.truffle.sl.*; import com.oracle.truffle.sl.builtins.*; import com.oracle.truffle.sl.nodes.*; +import com.oracle.truffle.sl.nodes.instrument.*; import com.oracle.truffle.sl.nodes.local.*; import com.oracle.truffle.sl.parser.*; @@ -154,6 +156,17 @@ Parser.parseSL(this, source); + List functionList = getFunctionRegistry().getFunctions(); + + // Since only functions can be global in SL, this guarantees that we instrument + // everything of interest. Parsing must occur before accepting the visitors since + // the visitor which creates our instrumentation points expects a complete AST. + + for (SLFunction function : functionList) { + RootCallTarget rootCallTarget = function.getCallTarget(); + rootCallTarget.getRootNode().accept(new SLInstrumenter()); + } + if (sourceCallback != null) { sourceCallback.endLoading(source); }