diff --git a/src/main/java/com/google/devtools/build/lib/profiler/ProfilerTask.java b/src/main/java/com/google/devtools/build/lib/profiler/ProfilerTask.java
index 1d84309..7a328f9 100644
--- a/src/main/java/com/google/devtools/build/lib/profiler/ProfilerTask.java
+++ b/src/main/java/com/google/devtools/build/lib/profiler/ProfilerTask.java
@@ -84,10 +84,10 @@
   __CONSTRUCT_INCLUDE_PATHS("construct include paths"), // unused
   __PARSE_AND_HINTS_RESULTS("parse and hints results"), // unused
   __PROCESS_RESULTS_AND_ENQUEUE("process results and enqueue"), // unused
-  SKYLARK_PARSER("Starlark Parser"),
-  SKYLARK_USER_FN("Starlark user function call", -0xCC0033),
-  SKYLARK_BUILTIN_FN("Starlark builtin function call", 0x990033),
-  SKYLARK_USER_COMPILED_FN("Starlark compiled user function call", 0xCC0033),
+  STARLARK_PARSER("Starlark Parser"),
+  STARLARK_USER_FN("Starlark user function call", -0xCC0033),
+  STARLARK_BUILTIN_FN("Starlark builtin function call", 0x990033),
+  STARLARK_USER_COMPILED_FN("Starlark compiled user function call", 0xCC0033),
   ACTION_FS_STAGING("Staging per-action file system", 0x000000),
   UNKNOWN("Unknown event",  0x339966);
 
diff --git a/src/main/java/com/google/devtools/build/lib/profiler/analysis/ProfileInfo.java b/src/main/java/com/google/devtools/build/lib/profiler/analysis/ProfileInfo.java
index 4eb7f6e..7dcbca6 100644
--- a/src/main/java/com/google/devtools/build/lib/profiler/analysis/ProfileInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/profiler/analysis/ProfileInfo.java
@@ -293,15 +293,15 @@
      * <p>Example:
      *
      * <pre>
-     * 636779 SKYLARK_USER_FN (259.593 ms) /path/file.bzl:42#function [
-     *   636810 SKYLARK_USER_FN (257.768 ms) /path/file.bzl:133#_other_function [
-     *     636974 SKYLARK_BUILTIN_FN (254.596 ms) some.package.PackageFactory$9#genrule []
+     * 636779 STARLARK_USER_FN (259.593 ms) /path/file.bzl:42#function [
+     *   636810 STARLARK_USER_FN (257.768 ms) /path/file.bzl:133#_other_function [
+     *     636974 STARLARK_BUILTIN_FN (254.596 ms) some.package.PackageFactory$9#genrule []
      *   2 subtree(s) omitted]
      * ]
      * </pre>
      *
      * @param durationThresholdMillis Tasks with a shorter duration than this threshold will be
-     *  skipped
+     *     skipped
      * @return whether this task took longer than the threshold and was thus printed
      */
     public boolean printTaskTree(PrintStream out, long durationThresholdMillis) {
@@ -543,11 +543,11 @@
     builtinFunctions = ListMultimapBuilder.treeKeys().arrayListValues().build();
 
     for (Task task : allTasksById) {
-      if (task.type == ProfilerTask.SKYLARK_BUILTIN_FN) {
+      if (task.type == ProfilerTask.STARLARK_BUILTIN_FN) {
         builtinFunctions.put(task.getDescription(), task);
-      } else if (task.type == ProfilerTask.SKYLARK_USER_FN) {
+      } else if (task.type == ProfilerTask.STARLARK_USER_FN) {
         userFunctions.put(task.getDescription(), task);
-      } else if (task.type == ProfilerTask.SKYLARK_USER_COMPILED_FN) {
+      } else if (task.type == ProfilerTask.STARLARK_USER_COMPILED_FN) {
         compiledUserFunctions.put(task.getDescription(), task);
       }
     }
diff --git a/src/main/java/com/google/devtools/build/lib/profiler/output/SkylarkHtml.java b/src/main/java/com/google/devtools/build/lib/profiler/output/SkylarkHtml.java
index b560e1f..834a0cc 100644
--- a/src/main/java/com/google/devtools/build/lib/profiler/output/SkylarkHtml.java
+++ b/src/main/java/com/google/devtools/build/lib/profiler/output/SkylarkHtml.java
@@ -31,7 +31,8 @@
    * How many characters from the end of the location of a Skylark function to display.
    */
   private static final int NUM_LOCATION_CHARS_UNABBREVIATED = 40;
-  private static final String JS_DATA_VAR = "skylarkData";
+
+  private static final String JS_DATA_VAR = "starlarkData";
   private static final String JS_TABLE_VAR = JS_DATA_VAR + "Table";
 
   private final SkylarkStatistics stats;
@@ -52,13 +53,13 @@
    */
   void printHtmlHead() {
     lnOpen("style", "type", "text/css", "<!--");
-    lnPrint("div.skylark-histogram {");
+    lnPrint("div.starlark-histogram {");
     lnPrint("  width: 95%; margin: 0 auto; display: none;");
     lnPrint("}");
-    lnPrint("div.skylark-chart {");
+    lnPrint("div.starlark-chart {");
     lnPrint("  width: 100%; height: 200px; margin: 0 auto 2em;");
     lnPrint("}");
-    lnPrint("div.skylark-table {");
+    lnPrint("div.starlark-table {");
     lnPrint("  width: 95%; margin: 0 auto;");
     lnPrint("}");
     lnPrint("-->");
@@ -265,29 +266,29 @@
    * Skylark functions.
    */
   void printHtmlBody() {
-    lnPrint("<a name='skylark_stats'/>");
-    lnElement("h3", "Skylark Statistics");
+    lnPrint("<a name='starlark_stats'/>");
+    lnElement("h3", "Starlark Statistics");
     lnElement("p", "All duration columns in milliseconds, except where noted otherwise.");
     lnElement("h4", "User-Defined function execution time");
-    lnOpen("div", "class", "skylark-histogram", "id", "user-histogram");
-    lnElement("div", "class", "skylark-chart", "id", "user-chart");
+    lnOpen("div", "class", "starlark-histogram", "id", "user-histogram");
+    lnElement("div", "class", "starlark-chart", "id", "user-chart");
     lnElement("button", "id", "user-close", "Hide");
     lnClose(); // div user-histogram
-    lnElement("div", "class", "skylark-table", "id", "user_function_stats");
+    lnElement("div", "class", "starlark-table", "id", "user_function_stats");
 
     lnElement("h4", "Compiled function execution time");
-    lnOpen("div", "class", "skylark-histogram", "id", "compiled-histogram");
-    lnElement("div", "class", "skylark-chart", "id", "compiled-chart");
+    lnOpen("div", "class", "starlark-histogram", "id", "compiled-histogram");
+    lnElement("div", "class", "starlark-chart", "id", "compiled-chart");
     lnElement("button", "id", "user-close", "Hide");
     lnClose(); // div compiled-histogram
-    lnElement("div", "class", "skylark-table", "id", "compiled_function_stats");
+    lnElement("div", "class", "starlark-table", "id", "compiled_function_stats");
 
     lnElement("h4", "Builtin function execution time");
-    lnOpen("div", "class", "skylark-histogram", "id", "builtin-histogram");
-    lnElement("div", "class", "skylark-chart", "id", "builtin-chart");
+    lnOpen("div", "class", "starlark-histogram", "id", "builtin-histogram");
+    lnElement("div", "class", "starlark-chart", "id", "builtin-chart");
     lnElement("button", "id", "builtin-close", "Hide");
     lnClose(); // div builtin-histogram
-    lnElement("div", "class", "skylark-table", "id", "builtin_function_stats");
+    lnElement("div", "class", "starlark-table", "id", "builtin_function_stats");
   }
 
   /**
@@ -345,5 +346,3 @@
     return root + Joiner.on(separator).join(Arrays.asList(elements).subList(1, elements.length));
   }
 }
-
-
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/BuiltinCallable.java b/src/main/java/com/google/devtools/build/lib/syntax/BuiltinCallable.java
index a7f7044..60aed5b 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/BuiltinCallable.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/BuiltinCallable.java
@@ -123,7 +123,7 @@
     }
 
     try (SilentCloseable c =
-        Profiler.instance().profile(ProfilerTask.SKYLARK_BUILTIN_FN, getName())) {
+        Profiler.instance().profile(ProfilerTask.STARLARK_BUILTIN_FN, getName())) {
       env.enterScope(this, SHARED_LEXICAL_FRAME_FOR_BUILTIN_METHOD_CALLS, ast, env.getGlobals());
       return descriptor.call(obj, args, ast.getLocation(), env);
     } finally {
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/BuiltinFunction.java b/src/main/java/com/google/devtools/build/lib/syntax/BuiltinFunction.java
index 0d423ed..d8d87d5 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/BuiltinFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/BuiltinFunction.java
@@ -168,7 +168,7 @@
 
     // Last but not least, actually make an inner call to the function with the resolved arguments.
     try (SilentCloseable c =
-        Profiler.instance().profile(ProfilerTask.SKYLARK_BUILTIN_FN, getName())) {
+        Profiler.instance().profile(ProfilerTask.STARLARK_BUILTIN_FN, getName())) {
       env.enterScope(this, SHARED_LEXICAL_FRAME_FOR_BUILTIN_FUNCTION_CALLS, ast, env.getGlobals());
       return invokeMethod.invoke(this, args);
     } catch (InvocationTargetException x) {
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Parser.java b/src/main/java/com/google/devtools/build/lib/syntax/Parser.java
index 6226993..3524e84 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/Parser.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Parser.java
@@ -191,7 +191,8 @@
     Parser parser = new Parser(lexer, eventHandler);
     List<Statement> statements;
     try (SilentCloseable c =
-        Profiler.instance().profile(ProfilerTask.SKYLARK_PARSER, input.getPath().getPathString())) {
+        Profiler.instance()
+            .profile(ProfilerTask.STARLARK_PARSER, input.getPath().getPathString())) {
       statements = parser.parseFileInput();
     }
     boolean errors = parser.errorsCount > 0 || lexer.containsErrors();
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/UserDefinedFunction.java b/src/main/java/com/google/devtools/build/lib/syntax/UserDefinedFunction.java
index 5783d11..e63c455 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/UserDefinedFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/UserDefinedFunction.java
@@ -66,7 +66,8 @@
 
     ImmutableList<String> names = signature.getSignature().getNames();
     LexicalFrame lexicalFrame = LexicalFrame.create(env.mutability(), /*numArgs=*/ names.size());
-    try (SilentCloseable c = Profiler.instance().profile(ProfilerTask.SKYLARK_USER_FN, getName())) {
+    try (SilentCloseable c =
+        Profiler.instance().profile(ProfilerTask.STARLARK_USER_FN, getName())) {
       env.enterScope(this, lexicalFrame, ast, definitionGlobals);
 
       // Registering the functions's arguments as variables in the local Environment
