| 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_
|
|
|