| Index: runtime/vm/object_test.cc
|
| ===================================================================
|
| --- runtime/vm/object_test.cc (revision 1958)
|
| +++ runtime/vm/object_test.cc (working copy)
|
| @@ -2065,7 +2065,8 @@
|
| }
|
|
|
|
|
| -#if defined(TARGET_ARCH_IA32) // only ia32 can run execution tests.
|
| +// only ia32 and x64 can run execution tests.
|
| +#if defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64)
|
| // Test for Code and Instruction object creation.
|
| TEST_CASE(Code) {
|
| extern void GenerateIncrement(Assembler* assembler);
|
| @@ -2104,8 +2105,8 @@
|
|
|
| // Test for Embedded Smi object in the instructions.
|
| TEST_CASE(EmbedSmiInCode) {
|
| - extern void GenerateEmbedSmiInCode(Assembler* assembler, int value);
|
| - const int kSmiTestValue = 5;
|
| + extern void GenerateEmbedSmiInCode(Assembler* assembler, intptr_t value);
|
| + const intptr_t kSmiTestValue = 5;
|
| Assembler _assembler_;
|
| GenerateEmbedSmiInCode(&_assembler_, kSmiTestValue);
|
| Code& code = Code::Handle(
|
| @@ -2118,6 +2119,24 @@
|
| }
|
|
|
|
|
| +#if defined(ARCH_IS_64_BIT)
|
| +// Test for Embedded Smi object in the instructions.
|
| +TEST_CASE(EmbedSmiIn64BitCode) {
|
| + extern void GenerateEmbedSmiInCode(Assembler* assembler, intptr_t value);
|
| + const intptr_t kSmiTestValue = 5L << 32;
|
| + Assembler _assembler_;
|
| + GenerateEmbedSmiInCode(&_assembler_, kSmiTestValue);
|
| + Code& code = Code::Handle(
|
| + Code::FinalizeCode("Test_EmbedSmiIn64BitCode", &_assembler_));
|
| + Instructions& instructions = Instructions::Handle(code.instructions());
|
| + typedef intptr_t (*EmbedSmiCode)();
|
| + intptr_t retval =
|
| + reinterpret_cast<EmbedSmiCode>(instructions.EntryPoint())();
|
| + EXPECT((retval >> kSmiTagShift) == kSmiTestValue);
|
| +}
|
| +#endif
|
| +
|
| +
|
| TEST_CASE(ExceptionHandlers) {
|
| const int kNumEntries = 6;
|
| // Add an exception handler table to the code.
|
| @@ -2218,6 +2237,6 @@
|
| ASSERT(count == 2);
|
| }
|
|
|
| -#endif // TARGET_ARCH_IA32.
|
| +#endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64).
|
|
|
| } // namespace dart
|
|
|