Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(595)

Unified Diff: runtime/vm/object_arm64_test.cc

Issue 239303008: Adds object pool, LoadImmediate, and LoadObject to ARM64. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: runtime/vm/object_arm64_test.cc
===================================================================
--- runtime/vm/object_arm64_test.cc (revision 35070)
+++ runtime/vm/object_arm64_test.cc (working copy)
@@ -6,6 +6,51 @@
#include "vm/globals.h"
#if defined(TARGET_ARCH_ARM64)
-// TODO(zra): Port these tests.
+#include "vm/assembler.h"
+#include "vm/object.h"
+#include "vm/unit_test.h"
+namespace dart {
+
+#define __ assembler->
+
+// Generate a simple dart code sequence.
+// This is used to test Code and Instruction object creation.
+void GenerateIncrement(Assembler* assembler) {
+ __ movz(R0, 0, 0);
+ __ Push(R0);
+ __ add(R0, R0, Operand(1));
+ __ str(R0, Address(SP));
+ __ ldr(R1, Address(SP));
+ __ add(R1, R1, Operand(1));
+ __ Pop(R0);
+ __ mov(R0, R1);
+ __ ret();
+}
+
+
+// Generate a dart code sequence that embeds a string object in it.
+// This is used to test Embedded String objects in the instructions.
+void GenerateEmbedStringInCode(Assembler* assembler, const char* str) {
+ const String& string_object =
+ String::ZoneHandle(String::New(str, Heap::kOld));
+ __ Push(PP); // Save caller's pool pointer and load a new one here.
+ __ LoadPoolPointer(PP);
+ __ LoadObject(R0, string_object, PP);
+ __ Pop(PP); // Restore caller's pool pointer.
+ __ ret();
+}
+
+
+// Generate a dart code sequence that embeds a smi object in it.
+// This is used to test Embedded Smi objects in the instructions.
+void GenerateEmbedSmiInCode(Assembler* assembler, intptr_t value) {
+ const Smi& smi_object = Smi::ZoneHandle(Smi::New(value));
+ const int64_t val = reinterpret_cast<int64_t>(smi_object.raw());
+ __ LoadImmediate(R0, val, kNoRegister);
+ __ ret();
+}
+
+} // namespace dart
+
#endif // defined TARGET_ARCH_ARM64

Powered by Google App Engine
This is Rietveld 408576698