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

Unified Diff: runtime/vm/assembler_mips.h

Issue 11926022: Add mips skeleton sources. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 11 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
« no previous file with comments | « runtime/vm/assembler_macros_mips.cc ('k') | runtime/vm/assembler_mips.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/assembler_mips.h
===================================================================
--- runtime/vm/assembler_mips.h (revision 0)
+++ runtime/vm/assembler_mips.h (revision 0)
@@ -0,0 +1,183 @@
+// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+#ifndef VM_ASSEMBLER_MIPS_H_
+#define VM_ASSEMBLER_MIPS_H_
+
+#ifndef VM_ASSEMBLER_H_
+#error Do not include assembler_mips.h directly; use assembler.h instead.
+#endif
+
+#include "platform/assert.h"
+#include "vm/constants_mips.h"
+
+namespace dart {
+
+class Operand : public ValueObject {
+ public:
+ Operand(const Operand& other) : ValueObject() {
+ UNIMPLEMENTED();
+ }
+
+ Operand& operator=(const Operand& other) {
+ UNIMPLEMENTED();
+ return *this;
+ }
+
+ protected:
+ Operand() { } // Needed by subclass Address.
+};
+
+
+class Address : public Operand {
+ public:
+ Address(Register base, int32_t disp) {
+ UNIMPLEMENTED();
+ }
+
+ Address(const Address& other) : Operand(other) { }
+
+ Address& operator=(const Address& other) {
+ Operand::operator=(other);
+ return *this;
+ }
+};
+
+
+class FieldAddress : public Address {
+ public:
+ FieldAddress(Register base, int32_t disp)
+ : Address(base, disp - kHeapObjectTag) { }
+
+ FieldAddress(const FieldAddress& other) : Address(other) { }
+
+ FieldAddress& operator=(const FieldAddress& other) {
+ Address::operator=(other);
+ return *this;
+ }
+};
+
+
+class Label : public ValueObject {
+ public:
+ Label() : position_(0) { }
+
+ ~Label() {
+ // Assert if label is being destroyed with unresolved branches pending.
+ ASSERT(!IsLinked());
+ }
+
+ // Returns the position for bound and linked labels. Cannot be used
+ // for unused labels.
+ int Position() const {
+ ASSERT(!IsUnused());
+ return IsBound() ? -position_ - kWordSize : position_ - kWordSize;
+ }
+
+ bool IsBound() const { return position_ < 0; }
+ bool IsUnused() const { return position_ == 0; }
+ bool IsLinked() const { return position_ > 0; }
+
+ private:
+ int position_;
+
+ void Reinitialize() {
+ position_ = 0;
+ }
+
+ void BindTo(int position) {
+ ASSERT(!IsBound());
+ position_ = -position - kWordSize;
+ ASSERT(IsBound());
+ }
+
+ void LinkTo(int position) {
+ ASSERT(!IsBound());
+ position_ = position + kWordSize;
+ ASSERT(IsLinked());
+ }
+
+ friend class Assembler;
+ DISALLOW_COPY_AND_ASSIGN(Label);
+};
+
+
+class CPUFeatures : public AllStatic {
+ public:
+ static void InitOnce() { }
+ static bool double_truncate_round_supported() {
+ UNIMPLEMENTED();
+ return false;
+ }
+};
+
+
+class Assembler : public ValueObject {
+ public:
+ Assembler() { UNIMPLEMENTED(); }
+ ~Assembler() { }
+
+ void PopRegister(Register r) {
+ UNIMPLEMENTED();
+ }
+
+ void Bind(Label* label) {
+ UNIMPLEMENTED();
+ }
+
+ // Misc. functionality
+ int CodeSize() const {
+ UNIMPLEMENTED();
+ return 0;
+ }
+ int prologue_offset() const {
+ UNIMPLEMENTED();
+ return 0;
+ }
+ const ZoneGrowableArray<int>& GetPointerOffsets() const {
+ UNIMPLEMENTED();
+ return *pointer_offsets_;
+ }
+ void FinalizeInstructions(const MemoryRegion& region) {
+ UNIMPLEMENTED();
+ }
+
+ // Debugging and bringup support.
+ void Stop(const char* message) { UNIMPLEMENTED(); }
+ void Unimplemented(const char* message);
+ void Untested(const char* message);
+ void Unreachable(const char* message);
+
+ static void InitializeMemoryWithBreakpoints(uword data, int length) {
+ UNIMPLEMENTED();
+ }
+
+ void Comment(const char* format, ...) PRINTF_ATTRIBUTE(2, 3) {
+ UNIMPLEMENTED();
+ }
+
+ const Code::Comments& GetCodeComments() const {
+ UNIMPLEMENTED();
+ return Code::Comments::New(0);
+ }
+
+ static const char* RegisterName(Register reg) {
+ UNIMPLEMENTED();
+ return NULL;
+ }
+
+ static const char* FpuRegisterName(FpuRegister reg) {
+ UNIMPLEMENTED();
+ return NULL;
+ }
+
+ private:
+ ZoneGrowableArray<int>* pointer_offsets_;
+ DISALLOW_ALLOCATION();
+ DISALLOW_COPY_AND_ASSIGN(Assembler);
+};
+
+} // namespace dart
+
+#endif // VM_ASSEMBLER_MIPS_H_
« no previous file with comments | « runtime/vm/assembler_macros_mips.cc ('k') | runtime/vm/assembler_mips.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698