Compile list literals to byte code.

--
MOS_MIGRATED_REVID=107231604
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java b/src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java
index d284427..29e160c 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java
@@ -22,8 +22,11 @@
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.events.Location;
+import com.google.devtools.build.lib.syntax.compiler.ByteCodeUtils;
 import com.google.devtools.build.lib.vfs.PathFragment;
 
+import net.bytebuddy.implementation.bytecode.StackManipulation;
+
 import java.util.Collection;
 import java.util.Comparator;
 import java.util.List;
@@ -111,12 +114,15 @@
     return false;
   }
 
+  public static final StackManipulation checkValidDictKey =
+      ByteCodeUtils.invoke(EvalUtils.class, "checkValidDictKey", Object.class);
+
   /**
    * Checks that an Object is a valid key for a Skylark dict.
    * @param o an Object to validate
    * @throws EvalException if o is not a valid key
    */
-  static void checkValidDictKey(Object o) throws EvalException {
+  public static void checkValidDictKey(Object o) throws EvalException {
     // TODO(bazel-team): check that all recursive elements are both Immutable AND Comparable.
     if (isImmutable(o)) {
       return;
@@ -339,6 +345,9 @@
     return obj;
   }
 
+  public static final StackManipulation toBoolean =
+      ByteCodeUtils.invoke(EvalUtils.class, "toBoolean", Object.class);
+
   /**
    * @return the truth value of an object, according to Python rules.
    * http://docs.python.org/2/library/stdtypes.html#truth-value-testing
@@ -367,6 +376,9 @@
     }
   }
 
+  public static final StackManipulation toCollection =
+      ByteCodeUtils.invoke(EvalUtils.class, "toCollection", Object.class, Location.class);
+
   @SuppressWarnings("unchecked")
   public static Collection<?> toCollection(Object o, Location loc) throws EvalException {
     if (o instanceof Collection) {
@@ -390,6 +402,9 @@
     }
   }
 
+  public static final StackManipulation toIterable =
+      ByteCodeUtils.invoke(EvalUtils.class, "toIterable", Object.class, Location.class);
+
   @SuppressWarnings("unchecked")
   public static Iterable<?> toIterable(Object o, Location loc) throws EvalException {
     if (o instanceof String) {