| Index: runtime/vm/object_test.cc
|
| ===================================================================
|
| --- runtime/vm/object_test.cc (revision 7417)
|
| +++ runtime/vm/object_test.cc (working copy)
|
| @@ -2382,12 +2382,21 @@
|
|
|
| // only ia32 and x64 can run execution tests.
|
| #if defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64)
|
| +
|
| +static Function* CreateFunction(const char* name) {
|
| + const String& function_name = String::ZoneHandle(String::NewSymbol(name));
|
| + Function& function = Function::ZoneHandle(
|
| + Function::New(function_name, RawFunction::kFunction, true, false, 0));
|
| + return &function;
|
| +}
|
| +
|
| // Test for Code and Instruction object creation.
|
| TEST_CASE(Code) {
|
| extern void GenerateIncrement(Assembler* assembler);
|
| Assembler _assembler_;
|
| GenerateIncrement(&_assembler_);
|
| - Code& code = Code::Handle(Code::FinalizeCode("Test_Code", &_assembler_));
|
| + Code& code = Code::Handle(Code::FinalizeCode(
|
| + *CreateFunction("Test_Code"), &_assembler_));
|
| Instructions& instructions = Instructions::Handle(code.instructions());
|
| typedef int (*IncrementCode)();
|
| EXPECT_EQ(2, reinterpret_cast<IncrementCode>(instructions.EntryPoint())());
|
| @@ -2403,8 +2412,8 @@
|
| word expected_length = static_cast<word>(strlen(kHello));
|
| Assembler _assembler_;
|
| GenerateEmbedStringInCode(&_assembler_, kHello);
|
| - Code& code = Code::Handle(
|
| - Code::FinalizeCode("Test_EmbedStringInCode", &_assembler_));
|
| + Code& code = Code::Handle(Code::FinalizeCode(
|
| + *CreateFunction("Test_EmbedStringInCode"), &_assembler_));
|
| Instructions& instructions = Instructions::Handle(code.instructions());
|
| typedef uword (*EmbedStringCode)();
|
| uword retval = reinterpret_cast<EmbedStringCode>(instructions.EntryPoint())();
|
| @@ -2424,8 +2433,8 @@
|
| const intptr_t kSmiTestValue = 5;
|
| Assembler _assembler_;
|
| GenerateEmbedSmiInCode(&_assembler_, kSmiTestValue);
|
| - Code& code = Code::Handle(
|
| - Code::FinalizeCode("Test_EmbedSmiInCode", &_assembler_));
|
| + Code& code = Code::Handle(Code::FinalizeCode(
|
| + *CreateFunction("Test_EmbedSmiInCode"), &_assembler_));
|
| Instructions& instructions = Instructions::Handle(code.instructions());
|
| typedef intptr_t (*EmbedSmiCode)();
|
| intptr_t retval =
|
| @@ -2441,8 +2450,8 @@
|
| const intptr_t kSmiTestValue = 5L << 32;
|
| Assembler _assembler_;
|
| GenerateEmbedSmiInCode(&_assembler_, kSmiTestValue);
|
| - Code& code = Code::Handle(
|
| - Code::FinalizeCode("Test_EmbedSmiIn64BitCode", &_assembler_));
|
| + Code& code = Code::Handle(Code::FinalizeCode(
|
| + *CreateFunction("Test_EmbedSmiIn64BitCode"), &_assembler_));
|
| Instructions& instructions = Instructions::Handle(code.instructions());
|
| typedef intptr_t (*EmbedSmiCode)();
|
| intptr_t retval =
|
| @@ -2467,7 +2476,8 @@
|
| extern void GenerateIncrement(Assembler* assembler);
|
| Assembler _assembler_;
|
| GenerateIncrement(&_assembler_);
|
| - Code& code = Code::Handle(Code::FinalizeCode("Test_Code", &_assembler_));
|
| + Code& code = Code::Handle(Code::FinalizeCode(
|
| + *CreateFunction("Test_Code"), &_assembler_));
|
| code.set_exception_handlers(exception_handlers);
|
|
|
| // Verify the exception handler table entries by accessing them.
|
| @@ -2496,7 +2506,8 @@
|
| extern void GenerateIncrement(Assembler* assembler);
|
| Assembler _assembler_;
|
| GenerateIncrement(&_assembler_);
|
| - Code& code = Code::Handle(Code::FinalizeCode("Test_Code", &_assembler_));
|
| + Code& code = Code::Handle(Code::FinalizeCode(
|
| + *CreateFunction("Test_Code"), &_assembler_));
|
| code.set_pc_descriptors(descriptors);
|
|
|
| // Verify the PcDescriptor entries by accessing them.
|
|
|