183a4728861129dc263ded92157f3e6389f851f19karlklose@chromium.org// Copyright 2011 the V8 project authors. All rights reserved. 23484964a86451e86dcf04be9bd8c0d76ee04f081rossberg@chromium.org// Use of this source code is governed by a BSD-style license that can be 33484964a86451e86dcf04be9bd8c0d76ee04f081rossberg@chromium.org// found in the LICENSE file. 45c838251403b0be9a882540f1922577abba4c872ager@chromium.org 55c838251403b0be9a882540f1922577abba4c872ager@chromium.org 65c838251403b0be9a882540f1922577abba4c872ager@chromium.org#ifndef V8_MIPS_CODEGEN_MIPS_H_ 75c838251403b0be9a882540f1922577abba4c872ager@chromium.org#define V8_MIPS_CODEGEN_MIPS_H_ 85c838251403b0be9a882540f1922577abba4c872ager@chromium.org 97516f05132429850aa326421ed3e25f23b4c071blrn@chromium.org 10196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "src/ast.h" 116474a1cfee1cdad45de5cc96960085e1c7daf11cmachenbach@chromium.org#include "src/macro-assembler.h" 127516f05132429850aa326421ed3e25f23b4c071blrn@chromium.org 135c838251403b0be9a882540f1922577abba4c872ager@chromium.orgnamespace v8 { 145c838251403b0be9a882540f1922577abba4c872ager@chromium.orgnamespace internal { 155c838251403b0be9a882540f1922577abba4c872ager@chromium.org 165c838251403b0be9a882540f1922577abba4c872ager@chromium.org 175c838251403b0be9a882540f1922577abba4c872ager@chromium.orgenum TypeofState { INSIDE_TYPEOF, NOT_INSIDE_TYPEOF }; 187516f05132429850aa326421ed3e25f23b4c071blrn@chromium.org 195c838251403b0be9a882540f1922577abba4c872ager@chromium.org 2064e3a4be4a99f31920128de34573c8ac9038de42ricow@chromium.orgclass StringCharLoadGenerator : public AllStatic { 2164e3a4be4a99f31920128de34573c8ac9038de42ricow@chromium.org public: 2264e3a4be4a99f31920128de34573c8ac9038de42ricow@chromium.org // Generates the code for handling different string types and loading the 2364e3a4be4a99f31920128de34573c8ac9038de42ricow@chromium.org // indexed character into |result|. We expect |index| as untagged input and 2464e3a4be4a99f31920128de34573c8ac9038de42ricow@chromium.org // |result| as untagged output. 2564e3a4be4a99f31920128de34573c8ac9038de42ricow@chromium.org static void Generate(MacroAssembler* masm, 2664e3a4be4a99f31920128de34573c8ac9038de42ricow@chromium.org Register string, 2764e3a4be4a99f31920128de34573c8ac9038de42ricow@chromium.org Register index, 2864e3a4be4a99f31920128de34573c8ac9038de42ricow@chromium.org Register result, 2964e3a4be4a99f31920128de34573c8ac9038de42ricow@chromium.org Label* call_runtime); 3064e3a4be4a99f31920128de34573c8ac9038de42ricow@chromium.org 3164e3a4be4a99f31920128de34573c8ac9038de42ricow@chromium.org private: 3264e3a4be4a99f31920128de34573c8ac9038de42ricow@chromium.org DISALLOW_COPY_AND_ASSIGN(StringCharLoadGenerator); 3364e3a4be4a99f31920128de34573c8ac9038de42ricow@chromium.org}; 3464e3a4be4a99f31920128de34573c8ac9038de42ricow@chromium.org 3583130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org 3683130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.orgclass MathExpGenerator : public AllStatic { 3783130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org public: 388e36b5ba34174c8ceb04a47d7e10dcc8f43d94a4machenbach@chromium.org // Register input isn't modified. All other registers are clobbered. 3983130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org static void EmitMathExp(MacroAssembler* masm, 4083130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org DoubleRegister input, 4183130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org DoubleRegister result, 4283130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org DoubleRegister double_scratch1, 4383130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org DoubleRegister double_scratch2, 4483130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org Register temp1, 4583130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org Register temp2, 4683130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org Register temp3); 4783130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org 4883130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org private: 4983130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org DISALLOW_COPY_AND_ASSIGN(MathExpGenerator); 5083130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org}; 5183130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org 525c838251403b0be9a882540f1922577abba4c872ager@chromium.org} } // namespace v8::internal 535c838251403b0be9a882540f1922577abba4c872ager@chromium.org 545c838251403b0be9a882540f1922577abba4c872ager@chromium.org#endif // V8_MIPS_CODEGEN_MIPS_H_ 55