Index: runtime/vm/runtime_entry_test.cc |
=================================================================== |
--- runtime/vm/runtime_entry_test.cc (revision 2205) |
+++ runtime/vm/runtime_entry_test.cc (working copy) |
@@ -4,11 +4,34 @@ |
#include "vm/runtime_entry.h" |
+#include "vm/code_index_table.h" |
#include "vm/object.h" |
#include "vm/verifier.h" |
namespace dart { |
+// Add function to a class and that class to the class dictionary so that |
+// frame walking can be used. |
+const Function& RegisterFakeFunction(const char* name, const Code& code) { |
+ const String& function_name = String::ZoneHandle(String::NewSymbol(name)); |
+ const Function& function = Function::ZoneHandle( |
+ Function::New(function_name, RawFunction::kFunction, true, false, 0)); |
+ Class& cls = Class::ZoneHandle(); |
+ const Script& script = Script::Handle(); |
+ cls = Class::New(function_name, script); |
+ const Array& functions = Array::Handle(Array::New(1)); |
+ functions.SetAt(0, function); |
+ cls.SetFunctions(functions); |
+ Library& lib = Library::Handle(Library::CoreLibrary()); |
+ lib.AddClass(cls); |
+ function.SetCode(code); |
+ CodeIndexTable* code_index_table = Isolate::Current()->code_index_table(); |
+ ASSERT(code_index_table != NULL); |
+ code_index_table->AddFunction(function); |
+ return function; |
+} |
+ |
+ |
// A runtime call for test purposes. |
// Arg0: a smi. |
// Arg1: a smi. |