| Index: src/mips/codegen-mips.cc
|
| diff --git a/src/mips/codegen-mips.cc b/src/mips/codegen-mips.cc
|
| index c1149dfd1dc32ebd760719b660ddbe396b1c2889..4400b643adb31ddca700330d98db13b578b07848 100644
|
| --- a/src/mips/codegen-mips.cc
|
| +++ b/src/mips/codegen-mips.cc
|
| @@ -1,4 +1,4 @@
|
| -// Copyright 2010 the V8 project authors. All rights reserved.
|
| +// 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:
|
| @@ -25,61 +25,18 @@
|
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
| -
|
| #include "v8.h"
|
|
|
| #if defined(V8_TARGET_ARCH_MIPS)
|
|
|
| -#include "bootstrapper.h"
|
| -#include "code-stubs.h"
|
| -#include "codegen-inl.h"
|
| -#include "compiler.h"
|
| -#include "debug.h"
|
| -#include "ic-inl.h"
|
| -#include "jsregexp.h"
|
| -#include "jump-target-inl.h"
|
| -#include "parser.h"
|
| -#include "regexp-macro-assembler.h"
|
| -#include "regexp-stack.h"
|
| -#include "register-allocator-inl.h"
|
| -#include "runtime.h"
|
| -#include "scopes.h"
|
| -#include "stub-cache.h"
|
| -#include "virtual-frame-inl.h"
|
| -#include "virtual-frame-mips-inl.h"
|
| +#include "codegen.h"
|
|
|
| namespace v8 {
|
| namespace internal {
|
|
|
| -
|
| -#define __ ACCESS_MASM(masm_)
|
| -
|
| -// -------------------------------------------------------------------------
|
| -// Platform-specific DeferredCode functions.
|
| -
|
| -void DeferredCode::SaveRegisters() {
|
| - // On MIPS you either have a completely spilled frame or you
|
| - // handle it yourself, but at the moment there's no automation
|
| - // of registers and deferred code.
|
| -}
|
| -
|
| -
|
| -void DeferredCode::RestoreRegisters() {
|
| -}
|
| -
|
| -
|
| // -------------------------------------------------------------------------
|
| // Platform-specific RuntimeCallHelper functions.
|
|
|
| -void VirtualFrameRuntimeCallHelper::BeforeCall(MacroAssembler* masm) const {
|
| - frame_state_->frame()->AssertIsSpilled();
|
| -}
|
| -
|
| -
|
| -void VirtualFrameRuntimeCallHelper::AfterCall(MacroAssembler* masm) const {
|
| -}
|
| -
|
| -
|
| void StubRuntimeCallHelper::BeforeCall(MacroAssembler* masm) const {
|
| masm->EnterInternalFrame();
|
| }
|
| @@ -90,1124 +47,6 @@ void StubRuntimeCallHelper::AfterCall(MacroAssembler* masm) const {
|
| }
|
|
|
|
|
| -// -----------------------------------------------------------------------------
|
| -// CodeGenState implementation.
|
| -
|
| -CodeGenState::CodeGenState(CodeGenerator* owner)
|
| - : owner_(owner),
|
| - previous_(owner->state()) {
|
| - owner->set_state(this);
|
| -}
|
| -
|
| -
|
| -ConditionCodeGenState::ConditionCodeGenState(CodeGenerator* owner,
|
| - JumpTarget* true_target,
|
| - JumpTarget* false_target)
|
| - : CodeGenState(owner),
|
| - true_target_(true_target),
|
| - false_target_(false_target) {
|
| - owner->set_state(this);
|
| -}
|
| -
|
| -
|
| -TypeInfoCodeGenState::TypeInfoCodeGenState(CodeGenerator* owner,
|
| - Slot* slot,
|
| - TypeInfo type_info)
|
| - : CodeGenState(owner),
|
| - slot_(slot) {
|
| - owner->set_state(this);
|
| - old_type_info_ = owner->set_type_info(slot, type_info);
|
| -}
|
| -
|
| -
|
| -CodeGenState::~CodeGenState() {
|
| - ASSERT(owner_->state() == this);
|
| - owner_->set_state(previous_);
|
| -}
|
| -
|
| -
|
| -TypeInfoCodeGenState::~TypeInfoCodeGenState() {
|
| - owner()->set_type_info(slot_, old_type_info_);
|
| -}
|
| -
|
| -
|
| -// -----------------------------------------------------------------------------
|
| -// CodeGenerator implementation.
|
| -
|
| -CodeGenerator::CodeGenerator(MacroAssembler* masm)
|
| - : deferred_(8),
|
| - masm_(masm),
|
| - info_(NULL),
|
| - frame_(NULL),
|
| - allocator_(NULL),
|
| - cc_reg_(cc_always),
|
| - state_(NULL),
|
| - loop_nesting_(0),
|
| - type_info_(NULL),
|
| - function_return_(JumpTarget::BIDIRECTIONAL),
|
| - function_return_is_shadowed_(false) {
|
| -}
|
| -
|
| -
|
| -// Calling conventions:
|
| -// fp: caller's frame pointer
|
| -// sp: stack pointer
|
| -// a1: called JS function
|
| -// cp: callee's context
|
| -
|
| -void CodeGenerator::Generate(CompilationInfo* info) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -int CodeGenerator::NumberOfSlot(Slot* slot) {
|
| - UNIMPLEMENTED_MIPS();
|
| - return 0;
|
| -}
|
| -
|
| -
|
| -MemOperand CodeGenerator::SlotOperand(Slot* slot, Register tmp) {
|
| - UNIMPLEMENTED_MIPS();
|
| - return MemOperand(zero_reg, 0);
|
| -}
|
| -
|
| -
|
| -MemOperand CodeGenerator::ContextSlotOperandCheckExtensions(
|
| - Slot* slot,
|
| - Register tmp,
|
| - Register tmp2,
|
| - JumpTarget* slow) {
|
| - UNIMPLEMENTED_MIPS();
|
| - return MemOperand(zero_reg, 0);
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::LoadCondition(Expression* x,
|
| - JumpTarget* true_target,
|
| - JumpTarget* false_target,
|
| - bool force_cc) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::Load(Expression* x) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::LoadGlobal() {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::LoadGlobalReceiver(Register scratch) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -ArgumentsAllocationMode CodeGenerator::ArgumentsMode() {
|
| - UNIMPLEMENTED_MIPS();
|
| - return EAGER_ARGUMENTS_ALLOCATION;
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::StoreArgumentsObject(bool initial) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::LoadTypeofExpression(Expression* x) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -Reference::Reference(CodeGenerator* cgen,
|
| - Expression* expression,
|
| - bool persist_after_get)
|
| - : cgen_(cgen),
|
| - expression_(expression),
|
| - type_(ILLEGAL),
|
| - persist_after_get_(persist_after_get) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -Reference::~Reference() {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::LoadReference(Reference* ref) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::UnloadReference(Reference* ref) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -// ECMA-262, section 9.2, page 30: ToBoolean(). Convert the given
|
| -// register to a boolean in the condition code register. The code
|
| -// may jump to 'false_target' in case the register converts to 'false'.
|
| -void CodeGenerator::ToBoolean(JumpTarget* true_target,
|
| - JumpTarget* false_target) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenericBinaryOperation(Token::Value op,
|
| - OverwriteMode overwrite_mode,
|
| - GenerateInlineSmi inline_smi,
|
| - int constant_rhs) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -class DeferredInlineSmiOperation: public DeferredCode {
|
| - public:
|
| - DeferredInlineSmiOperation(Token::Value op,
|
| - int value,
|
| - bool reversed,
|
| - OverwriteMode overwrite_mode,
|
| - Register tos)
|
| - : op_(op),
|
| - value_(value),
|
| - reversed_(reversed),
|
| - overwrite_mode_(overwrite_mode),
|
| - tos_register_(tos) {
|
| - set_comment("[ DeferredInlinedSmiOperation");
|
| - }
|
| -
|
| - virtual void Generate();
|
| - // This stub makes explicit calls to SaveRegisters(), RestoreRegisters() and
|
| - // Exit(). Currently on MIPS SaveRegisters() and RestoreRegisters() are empty
|
| - // methods, it is the responsibility of the deferred code to save and restore
|
| - // registers.
|
| - virtual bool AutoSaveAndRestore() { return false; }
|
| -
|
| - void JumpToNonSmiInput(Condition cond, Register cmp1, const Operand& cmp2);
|
| - void JumpToAnswerOutOfRange(Condition cond,
|
| - Register cmp1,
|
| - const Operand& cmp2);
|
| -
|
| - private:
|
| - void GenerateNonSmiInput();
|
| - void GenerateAnswerOutOfRange();
|
| - void WriteNonSmiAnswer(Register answer,
|
| - Register heap_number,
|
| - Register scratch);
|
| -
|
| - Token::Value op_;
|
| - int value_;
|
| - bool reversed_;
|
| - OverwriteMode overwrite_mode_;
|
| - Register tos_register_;
|
| - Label non_smi_input_;
|
| - Label answer_out_of_range_;
|
| -};
|
| -
|
| -
|
| -// For bit operations we try harder and handle the case where the input is not
|
| -// a Smi but a 32bits integer without calling the generic stub.
|
| -void DeferredInlineSmiOperation::JumpToNonSmiInput(Condition cond,
|
| - Register cmp1,
|
| - const Operand& cmp2) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -// For bit operations the result is always 32bits so we handle the case where
|
| -// the result does not fit in a Smi without calling the generic stub.
|
| -void DeferredInlineSmiOperation::JumpToAnswerOutOfRange(Condition cond,
|
| - Register cmp1,
|
| - const Operand& cmp2) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -// On entry the non-constant side of the binary operation is in tos_register_
|
| -// and the constant smi side is nowhere. The tos_register_ is not used by the
|
| -// virtual frame. On exit the answer is in the tos_register_ and the virtual
|
| -// frame is unchanged.
|
| -void DeferredInlineSmiOperation::Generate() {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -// Convert and write the integer answer into heap_number.
|
| -void DeferredInlineSmiOperation::WriteNonSmiAnswer(Register answer,
|
| - Register heap_number,
|
| - Register scratch) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void DeferredInlineSmiOperation::GenerateNonSmiInput() {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void DeferredInlineSmiOperation::GenerateAnswerOutOfRange() {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::SmiOperation(Token::Value op,
|
| - Handle<Object> value,
|
| - bool reversed,
|
| - OverwriteMode mode) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -// On MIPS we load registers condReg1 and condReg2 with the values which should
|
| -// be compared. With the CodeGenerator::cc_reg_ condition, functions will be
|
| -// able to evaluate correctly the condition. (eg CodeGenerator::Branch)
|
| -void CodeGenerator::Comparison(Condition cc,
|
| - Expression* left,
|
| - Expression* right,
|
| - bool strict) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::CallWithArguments(ZoneList<Expression*>* args,
|
| - CallFunctionFlags flags,
|
| - int position) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::CallApplyLazy(Expression* applicand,
|
| - Expression* receiver,
|
| - VariableProxy* arguments,
|
| - int position) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::Branch(bool if_true, JumpTarget* target) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::CheckStack() {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitStatements(ZoneList<Statement*>* statements) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitBlock(Block* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::DeclareGlobals(Handle<FixedArray> pairs) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitDeclaration(Declaration* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitExpressionStatement(ExpressionStatement* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitEmptyStatement(EmptyStatement* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitIfStatement(IfStatement* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitContinueStatement(ContinueStatement* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitBreakStatement(BreakStatement* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitReturnStatement(ReturnStatement* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateReturnSequence() {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitWithEnterStatement(WithEnterStatement* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitWithExitStatement(WithExitStatement* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitSwitchStatement(SwitchStatement* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitDoWhileStatement(DoWhileStatement* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitWhileStatement(WhileStatement* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitForStatement(ForStatement* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitForInStatement(ForInStatement* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitTryCatchStatement(TryCatchStatement* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitTryFinallyStatement(TryFinallyStatement* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitDebuggerStatement(DebuggerStatement* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::InstantiateFunction(
|
| - Handle<SharedFunctionInfo> function_info,
|
| - bool pretenure) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitFunctionLiteral(FunctionLiteral* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitSharedFunctionInfoLiteral(
|
| - SharedFunctionInfoLiteral* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitConditional(Conditional* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::LoadFromSlot(Slot* slot, TypeofState typeof_state) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::LoadFromSlotCheckForArguments(Slot* slot,
|
| - TypeofState state) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::StoreToSlot(Slot* slot, InitState init_state) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::LoadFromGlobalSlotCheckExtensions(Slot* slot,
|
| - TypeofState typeof_state,
|
| - JumpTarget* slow) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::EmitDynamicLoadFromSlotFastCase(Slot* slot,
|
| - TypeofState typeof_state,
|
| - JumpTarget* slow,
|
| - JumpTarget* done) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitSlot(Slot* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitVariableProxy(VariableProxy* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitLiteral(Literal* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitRegExpLiteral(RegExpLiteral* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitObjectLiteral(ObjectLiteral* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitArrayLiteral(ArrayLiteral* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitCatchExtensionObject(CatchExtensionObject* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::EmitSlotAssignment(Assignment* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::EmitNamedPropertyAssignment(Assignment* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::EmitKeyedPropertyAssignment(Assignment* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitAssignment(Assignment* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitThrow(Throw* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitProperty(Property* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitCall(Call* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitCallNew(CallNew* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateClassOf(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateValueOf(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateSetValueOf(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateIsSmi(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateLog(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateIsNonNegativeSmi(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateMathPow(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateMathSqrt(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -class DeferredStringCharCodeAt : public DeferredCode {
|
| - public:
|
| - DeferredStringCharCodeAt(Register object,
|
| - Register index,
|
| - Register scratch,
|
| - Register result)
|
| - : result_(result),
|
| - char_code_at_generator_(object,
|
| - index,
|
| - scratch,
|
| - result,
|
| - &need_conversion_,
|
| - &need_conversion_,
|
| - &index_out_of_range_,
|
| - STRING_INDEX_IS_NUMBER) {}
|
| -
|
| - StringCharCodeAtGenerator* fast_case_generator() {
|
| - return &char_code_at_generator_;
|
| - }
|
| -
|
| - virtual void Generate() {
|
| - UNIMPLEMENTED_MIPS();
|
| - }
|
| -
|
| - private:
|
| - Register result_;
|
| -
|
| - Label need_conversion_;
|
| - Label index_out_of_range_;
|
| -
|
| - StringCharCodeAtGenerator char_code_at_generator_;
|
| -};
|
| -
|
| -
|
| -void CodeGenerator::GenerateStringCharCodeAt(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -class DeferredStringCharFromCode : public DeferredCode {
|
| - public:
|
| - DeferredStringCharFromCode(Register code,
|
| - Register result)
|
| - : char_from_code_generator_(code, result) {}
|
| -
|
| - StringCharFromCodeGenerator* fast_case_generator() {
|
| - return &char_from_code_generator_;
|
| - }
|
| -
|
| - virtual void Generate() {
|
| - VirtualFrameRuntimeCallHelper call_helper(frame_state());
|
| - char_from_code_generator_.GenerateSlow(masm(), call_helper);
|
| - }
|
| -
|
| - private:
|
| - StringCharFromCodeGenerator char_from_code_generator_;
|
| -};
|
| -
|
| -
|
| -void CodeGenerator::GenerateStringCharFromCode(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -class DeferredStringCharAt : public DeferredCode {
|
| - public:
|
| - DeferredStringCharAt(Register object,
|
| - Register index,
|
| - Register scratch1,
|
| - Register scratch2,
|
| - Register result)
|
| - : result_(result),
|
| - char_at_generator_(object,
|
| - index,
|
| - scratch1,
|
| - scratch2,
|
| - result,
|
| - &need_conversion_,
|
| - &need_conversion_,
|
| - &index_out_of_range_,
|
| - STRING_INDEX_IS_NUMBER) {}
|
| -
|
| - StringCharAtGenerator* fast_case_generator() {
|
| - return &char_at_generator_;
|
| - }
|
| -
|
| - virtual void Generate() {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| - private:
|
| - Register result_;
|
| -
|
| - Label need_conversion_;
|
| - Label index_out_of_range_;
|
| -
|
| - StringCharAtGenerator char_at_generator_;
|
| -};
|
| -
|
| -
|
| -void CodeGenerator::GenerateStringCharAt(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateIsArray(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateIsRegExp(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateIsObject(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateIsSpecObject(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -class DeferredIsStringWrapperSafeForDefaultValueOf : public DeferredCode {
|
| - public:
|
| - DeferredIsStringWrapperSafeForDefaultValueOf(Register object,
|
| - Register map_result,
|
| - Register scratch1,
|
| - Register scratch2)
|
| - : object_(object),
|
| - map_result_(map_result),
|
| - scratch1_(scratch1),
|
| - scratch2_(scratch2) { }
|
| -
|
| - virtual void Generate() {
|
| - UNIMPLEMENTED_MIPS();
|
| - }
|
| -
|
| - private:
|
| - Register object_;
|
| - Register map_result_;
|
| - Register scratch1_;
|
| - Register scratch2_;
|
| -};
|
| -
|
| -
|
| -void CodeGenerator::GenerateIsStringWrapperSafeForDefaultValueOf(
|
| - ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateIsFunction(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateIsUndetectableObject(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateIsConstructCall(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateArgumentsLength(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateArguments(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateRandomHeapNumber(
|
| - ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateStringAdd(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateSubString(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateStringCompare(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateRegExpExec(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateRegExpConstructResult(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -class DeferredSearchCache: public DeferredCode {
|
| - public:
|
| - DeferredSearchCache(Register dst, Register cache, Register key)
|
| - : dst_(dst), cache_(cache), key_(key) {
|
| - set_comment("[ DeferredSearchCache");
|
| - }
|
| -
|
| - virtual void Generate();
|
| -
|
| - private:
|
| - Register dst_, cache_, key_;
|
| -};
|
| -
|
| -
|
| -void DeferredSearchCache::Generate() {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateGetFromCache(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateNumberToString(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -class DeferredSwapElements: public DeferredCode {
|
| - public:
|
| - DeferredSwapElements(Register object, Register index1, Register index2)
|
| - : object_(object), index1_(index1), index2_(index2) {
|
| - set_comment("[ DeferredSwapElements");
|
| - }
|
| -
|
| - virtual void Generate();
|
| -
|
| - private:
|
| - Register object_, index1_, index2_;
|
| -};
|
| -
|
| -
|
| -void DeferredSwapElements::Generate() {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateSwapElements(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateCallFunction(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateMathSin(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateMathCos(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateMathLog(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateObjectEquals(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateIsRegExpEquivalent(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateHasCachedArrayIndex(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateGetCachedArrayIndex(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateFastAsciiArrayJoin(ZoneList<Expression*>* args) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitCallRuntime(CallRuntime* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitUnaryOperation(UnaryOperation* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -class DeferredCountOperation: public DeferredCode {
|
| - public:
|
| - DeferredCountOperation(Register value,
|
| - bool is_increment,
|
| - bool is_postfix,
|
| - int target_size)
|
| - : value_(value),
|
| - is_increment_(is_increment),
|
| - is_postfix_(is_postfix),
|
| - target_size_(target_size) {}
|
| -
|
| - virtual void Generate() {
|
| - UNIMPLEMENTED_MIPS();
|
| - }
|
| -
|
| - private:
|
| - Register value_;
|
| - bool is_increment_;
|
| - bool is_postfix_;
|
| - int target_size_;
|
| -};
|
| -
|
| -
|
| -void CodeGenerator::VisitCountOperation(CountOperation* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::GenerateLogicalBooleanOperation(BinaryOperation* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitBinaryOperation(BinaryOperation* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitThisFunction(ThisFunction* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitCompareOperation(CompareOperation* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::VisitCompareToNull(CompareToNull* node) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -class DeferredReferenceGetNamedValue: public DeferredCode {
|
| - public:
|
| - explicit DeferredReferenceGetNamedValue(Register receiver,
|
| - Handle<String> name,
|
| - bool is_contextual)
|
| - : receiver_(receiver),
|
| - name_(name),
|
| - is_contextual_(is_contextual),
|
| - is_dont_delete_(false) {
|
| - set_comment(is_contextual
|
| - ? "[ DeferredReferenceGetNamedValue (contextual)"
|
| - : "[ DeferredReferenceGetNamedValue");
|
| - }
|
| -
|
| - virtual void Generate();
|
| -
|
| - void set_is_dont_delete(bool value) {
|
| - ASSERT(is_contextual_);
|
| - is_dont_delete_ = value;
|
| - }
|
| -
|
| - private:
|
| - Register receiver_;
|
| - Handle<String> name_;
|
| - bool is_contextual_;
|
| - bool is_dont_delete_;
|
| -};
|
| -
|
| -
|
| -
|
| -void DeferredReferenceGetNamedValue::Generate() {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -class DeferredReferenceGetKeyedValue: public DeferredCode {
|
| - public:
|
| - DeferredReferenceGetKeyedValue(Register key, Register receiver)
|
| - : key_(key), receiver_(receiver) {
|
| - set_comment("[ DeferredReferenceGetKeyedValue");
|
| - }
|
| -
|
| - virtual void Generate();
|
| -
|
| - private:
|
| - Register key_;
|
| - Register receiver_;
|
| -};
|
| -
|
| -
|
| -void DeferredReferenceGetKeyedValue::Generate() {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -class DeferredReferenceSetKeyedValue: public DeferredCode {
|
| - public:
|
| - DeferredReferenceSetKeyedValue(Register value,
|
| - Register key,
|
| - Register receiver)
|
| - : value_(value), key_(key), receiver_(receiver) {
|
| - set_comment("[ DeferredReferenceSetKeyedValue");
|
| - }
|
| -
|
| - virtual void Generate();
|
| -
|
| - private:
|
| - Register value_;
|
| - Register key_;
|
| - Register receiver_;
|
| -};
|
| -
|
| -
|
| -void DeferredReferenceSetKeyedValue::Generate() {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -class DeferredReferenceSetNamedValue: public DeferredCode {
|
| - public:
|
| - DeferredReferenceSetNamedValue(Register value,
|
| - Register receiver,
|
| - Handle<String> name)
|
| - : value_(value), receiver_(receiver), name_(name) {
|
| - set_comment("[ DeferredReferenceSetNamedValue");
|
| - }
|
| -
|
| - virtual void Generate();
|
| -
|
| - private:
|
| - Register value_;
|
| - Register receiver_;
|
| - Handle<String> name_;
|
| -};
|
| -
|
| -
|
| -void DeferredReferenceSetNamedValue::Generate() {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::EmitNamedLoad(Handle<String> name, bool is_contextual) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::EmitNamedStore(Handle<String> name, bool is_contextual) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::EmitKeyedLoad() {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void CodeGenerator::EmitKeyedStore(StaticType* key_type,
|
| - WriteBarrierCharacter wb_info) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -#ifdef DEBUG
|
| -bool CodeGenerator::HasValidEntryRegisters() {
|
| - UNIMPLEMENTED_MIPS();
|
| - return false;
|
| -}
|
| -#endif
|
| -
|
| -
|
| -#undef __
|
| -#define __ ACCESS_MASM(masm)
|
| -
|
| -// -----------------------------------------------------------------------------
|
| -// Reference support.
|
| -
|
| -
|
| -Handle<String> Reference::GetName() {
|
| - UNIMPLEMENTED_MIPS();
|
| - return Handle<String>();
|
| -}
|
| -
|
| -
|
| -void Reference::DupIfPersist() {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void Reference::GetValue() {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -void Reference::SetValue(InitState init_state, WriteBarrierCharacter wb_info) {
|
| - UNIMPLEMENTED_MIPS();
|
| -}
|
| -
|
| -
|
| -const char* GenericBinaryOpStub::GetName() {
|
| - UNIMPLEMENTED_MIPS();
|
| - return name_;
|
| -}
|
| -
|
| -
|
| -#undef __
|
| -
|
| } } // namespace v8::internal
|
|
|
| #endif // V8_TARGET_ARCH_MIPS
|
|
|