Index: src/mips/lithium-mips.h |
diff --git a/src/mips/lithium-mips.h b/src/mips/lithium-mips.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e11dfabb11f8fa5e27d06477808745243159bce3 |
--- /dev/null |
+++ b/src/mips/lithium-mips.h |
@@ -0,0 +1,304 @@ |
+// Copyright 2011 the V8 project authors. All rights reserved. |
+// Redistribution and use in source and binary forms, with or without |
+// modification, are permitted provided that the following conditions are |
+// met: |
+// |
+// * Redistributions of source code must retain the above copyright |
+// notice, this list of conditions and the following disclaimer. |
+// * Redistributions in binary form must reproduce the above |
+// copyright notice, this list of conditions and the following |
+// disclaimer in the documentation and/or other materials provided |
+// with the distribution. |
+// * Neither the name of Google Inc. nor the names of its |
+// contributors may be used to endorse or promote products derived |
+// from this software without specific prior written permission. |
+// |
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
+ |
+#ifndef V8_MIPS_LITHIUM_MIPS_H_ |
+#define V8_MIPS_LITHIUM_MIPS_H_ |
+ |
+#include "hydrogen.h" |
+#include "lithium-allocator.h" |
+#include "lithium.h" |
+#include "safepoint-table.h" |
+ |
+// Note: this file was taken from the X64 version. ARM has a partially working |
+// lithium implementation, but for now it is not ported to mips. |
+ |
+namespace v8 { |
+namespace internal { |
+ |
+// Forward declarations. |
+class LCodeGen; |
+class LEnvironment; |
+class Translation; |
+ |
+class LInstruction: public ZoneObject { |
+ public: |
+ LInstruction() { } |
+ virtual ~LInstruction() { } |
+ |
+ // Predicates should be generated by macro as in lithium-ia32.h. |
+ virtual bool IsLabel() const { |
+ UNIMPLEMENTED(); |
+ return false; |
+ } |
+ virtual bool IsOsrEntry() const { |
+ UNIMPLEMENTED(); |
+ return false; |
+ } |
+ |
+ LPointerMap* pointer_map() const { |
+ UNIMPLEMENTED(); |
+ return NULL; |
+ } |
+ |
+ bool HasPointerMap() const { |
+ UNIMPLEMENTED(); |
+ return false; |
+ } |
+ |
+ void set_environment(LEnvironment* env) { UNIMPLEMENTED(); } |
+ |
+ LEnvironment* environment() const { |
+ UNIMPLEMENTED(); |
+ return NULL; |
+ } |
+ |
+ bool HasEnvironment() const { |
+ UNIMPLEMENTED(); |
+ return NULL; |
+ } |
+ |
+ virtual void PrintTo(StringStream* stream) const { UNIMPLEMENTED(); } |
+ |
+ virtual bool IsControl() const { |
+ UNIMPLEMENTED(); |
+ return false; |
+ } |
+ |
+ void MarkAsCall() { UNIMPLEMENTED(); } |
+ void MarkAsSaveDoubles() { UNIMPLEMENTED(); } |
+ |
+ // Interface to the register allocator and iterators. |
+ bool IsMarkedAsCall() const { |
+ UNIMPLEMENTED(); |
+ return false; |
+ } |
+ |
+ bool IsMarkedAsSaveDoubles() const { |
+ UNIMPLEMENTED(); |
+ return false; |
+ } |
+ |
+ virtual bool HasResult() const { |
+ UNIMPLEMENTED(); |
+ return false; |
+ } |
+ |
+ virtual LOperand* result() { |
+ UNIMPLEMENTED(); |
+ return NULL; |
+ } |
+ |
+ virtual int InputCount() { |
+ UNIMPLEMENTED(); |
+ return 0; |
+ } |
+ |
+ virtual LOperand* InputAt(int i) { |
+ UNIMPLEMENTED(); |
+ return NULL; |
+ } |
+ |
+ virtual int TempCount() { |
+ UNIMPLEMENTED(); |
+ return 0; |
+ } |
+ |
+ virtual LOperand* TempAt(int i) { |
+ UNIMPLEMENTED(); |
+ return NULL; |
+ } |
+ |
+ LOperand* FirstInput() { |
+ UNIMPLEMENTED(); |
+ return NULL; |
+ } |
+ |
+ LOperand* Output() { |
+ UNIMPLEMENTED(); |
+ return NULL; |
+ } |
+ |
+#ifdef DEBUG |
+ void VerifyCall() { UNIMPLEMENTED(); } |
+#endif |
+}; |
+ |
+ |
+class LGap: public LInstruction { |
+ public: |
+ explicit LGap(HBasicBlock* block) { } |
+ |
+ HBasicBlock* block() const { |
+ UNIMPLEMENTED(); |
+ return NULL; |
+ } |
+ |
+ enum InnerPosition { |
+ BEFORE, |
+ START, |
+ END, |
+ AFTER, |
+ FIRST_INNER_POSITION = BEFORE, |
+ LAST_INNER_POSITION = AFTER |
+ }; |
+ |
+ LParallelMove* GetOrCreateParallelMove(InnerPosition pos) { |
+ UNIMPLEMENTED(); |
+ return NULL; |
+ } |
+ |
+ LParallelMove* GetParallelMove(InnerPosition pos) { |
+ UNIMPLEMENTED(); |
+ return NULL; |
+ } |
+}; |
+ |
+ |
+class LLabel: public LGap { |
+ public: |
+ explicit LLabel(HBasicBlock* block) : LGap(block) { } |
+}; |
+ |
+ |
+class LOsrEntry: public LInstruction { |
+ public: |
+ // Function could be generated by a macro as in lithium-ia32.h. |
+ static LOsrEntry* cast(LInstruction* instr) { |
+ UNIMPLEMENTED(); |
+ return NULL; |
+ } |
+ |
+ LOperand** SpilledRegisterArray() { |
+ UNIMPLEMENTED(); |
+ return NULL; |
+ } |
+ LOperand** SpilledDoubleRegisterArray() { |
+ UNIMPLEMENTED(); |
+ return NULL; |
+ } |
+ |
+ void MarkSpilledRegister(int allocation_index, LOperand* spill_operand) { |
+ UNIMPLEMENTED(); |
+ } |
+ void MarkSpilledDoubleRegister(int allocation_index, |
+ LOperand* spill_operand) { |
+ UNIMPLEMENTED(); |
+ } |
+}; |
+ |
+ |
+class LChunk: public ZoneObject { |
+ public: |
+ explicit LChunk(CompilationInfo* info, HGraph* graph) { } |
+ |
+ HGraph* graph() const { |
+ UNIMPLEMENTED(); |
+ return NULL; |
+ } |
+ |
+ CompilationInfo* info() const { return NULL; } |
+ |
+ const ZoneList<LPointerMap*>* pointer_maps() const { |
+ UNIMPLEMENTED(); |
+ return NULL; |
+ } |
+ |
+ LOperand* GetNextSpillSlot(bool double_slot) { |
+ UNIMPLEMENTED(); |
+ return NULL; |
+ } |
+ |
+ LConstantOperand* DefineConstantOperand(HConstant* constant) { |
+ UNIMPLEMENTED(); |
+ return NULL; |
+ } |
+ |
+ LLabel* GetLabel(int block_id) const { |
+ UNIMPLEMENTED(); |
+ return NULL; |
+ } |
+ |
+ const ZoneList<LInstruction*>* instructions() const { |
+ UNIMPLEMENTED(); |
+ return NULL; |
+ } |
+ |
+ int GetParameterStackSlot(int index) const { |
+ UNIMPLEMENTED(); |
+ return 0; |
+ } |
+ |
+ void AddGapMove(int index, LOperand* from, LOperand* to) { UNIMPLEMENTED(); } |
+ |
+ LGap* GetGapAt(int index) const { |
+ UNIMPLEMENTED(); |
+ return NULL; |
+ } |
+ |
+ bool IsGapAt(int index) const { |
+ UNIMPLEMENTED(); |
+ return false; |
+ } |
+ |
+ int NearestGapPos(int index) const { |
+ UNIMPLEMENTED(); |
+ return 0; |
+ } |
+ |
+ void MarkEmptyBlocks() { UNIMPLEMENTED(); } |
+ |
+#ifdef DEBUG |
+ void Verify() { UNIMPLEMENTED(); } |
+#endif |
+}; |
+ |
+ |
+class LChunkBuilder BASE_EMBEDDED { |
+ public: |
+ LChunkBuilder(CompilationInfo* info, HGraph* graph, LAllocator* allocator) { } |
+ |
+ // Build the sequence for the graph. |
+ LChunk* Build() { |
+ UNIMPLEMENTED(); |
+ return NULL; |
+ }; |
+ |
+ // Declare methods that deal with the individual node types. |
+#define DECLARE_DO(type) LInstruction* Do##type(H##type* node) { \ |
+ UNIMPLEMENTED(); \ |
+ return NULL; \ |
+ } |
+ HYDROGEN_CONCRETE_INSTRUCTION_LIST(DECLARE_DO) |
+#undef DECLARE_DO |
+ |
+ DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); |
+}; |
+ |
+ |
+} } // namespace v8::internal |
+ |
+#endif // V8_MIPS_LITHIUM_MIPS_H_ |