Fix EvalExpression test.

Instance::Evaluate was replaced with EvaluateCompiledExpression. This fixes the test.
Change-Id: Ie5aba0a7ef25209a3319a07d45d76f347f6f3e95
Reviewed-on: https://dart-review.googlesource.com/58440
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
diff --git a/runtime/tests/vm/vm.status b/runtime/tests/vm/vm.status
index 4dfad32..7d7a017 100644
--- a/runtime/tests/vm/vm.status
+++ b/runtime/tests/vm/vm.status
@@ -144,9 +144,6 @@
 [ $compiler == dart2analyzer && $strong ]
 *: Skip # Issue 28649
 
-[ $compiler == dartk && $mode == debug ]
-cc/EvalExpression: Crash # Instance::Evaluate should be replaced with EvaluateCompiledExpression
-
 [ $compiler == dartk && $mode == debug && $runtime == vm ]
 cc/PrintJSON: Crash
 cc/Service_TokenStream: Crash
diff --git a/runtime/vm/compiler_test.cc b/runtime/vm/compiler_test.cc
index bbc4d16..c73e135 100644
--- a/runtime/vm/compiler_test.cc
+++ b/runtime/vm/compiler_test.cc
@@ -7,6 +7,7 @@
 #include "vm/class_finalizer.h"
 #include "vm/code_patcher.h"
 #include "vm/dart_api_impl.h"
+#include "vm/kernel_isolate.h"
 #include "vm/object.h"
 #include "vm/safepoint.h"
 #include "vm/symbols.h"
@@ -170,8 +171,31 @@
   expr_text = String::New("apa + ' ${calc(10)}' + dot");
   Object& val = Object::Handle();
   const Class& receiver_cls = Class::Handle(obj.clazz());
-  val = Instance::Cast(obj).Evaluate(
-      receiver_cls, expr_text, Array::empty_array(), Array::empty_array());
+
+  if (!KernelIsolate::IsRunning()) {
+    val = Instance::Cast(obj).Evaluate(
+        receiver_cls, expr_text, Array::empty_array(), Array::empty_array());
+  } else {
+    RawLibrary* raw_library = Library::RawCast(Api::UnwrapHandle(lib));
+    Library& lib_handle = Library::ZoneHandle(raw_library);
+
+    Dart_KernelCompilationResult compilation_result;
+    {
+      TransitionVMToNative transition(thread);
+      compilation_result = KernelIsolate::CompileExpressionToKernel(
+          expr_text.ToCString(), Array::empty_array(), Array::empty_array(),
+          String::Handle(lib_handle.url()).ToCString(), "A",
+          /* is_static= */ false);
+    }
+    EXPECT_EQ(Dart_KernelCompilationStatus_Ok, compilation_result.status);
+
+    const uint8_t* kernel_bytes = compilation_result.kernel;
+    intptr_t kernel_length = compilation_result.kernel_size;
+
+    val = Instance::Cast(obj).EvaluateCompiledExpression(
+        receiver_cls, kernel_bytes, kernel_length, Array::empty_array(),
+        Array::empty_array(), TypeArguments::null_type_arguments());
+  }
   EXPECT(!val.IsNull());
   EXPECT(!val.IsError());
   EXPECT(val.IsString());