1// Copyright 2011 the V8 project authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5 6#ifndef V8_MIPS_CODEGEN_MIPS_H_ 7#define V8_MIPS_CODEGEN_MIPS_H_ 8 9 10#include "src/ast.h" 11#include "src/macro-assembler.h" 12 13namespace v8 { 14namespace internal { 15 16 17enum TypeofState { INSIDE_TYPEOF, NOT_INSIDE_TYPEOF }; 18 19 20class StringCharLoadGenerator : public AllStatic { 21 public: 22 // Generates the code for handling different string types and loading the 23 // indexed character into |result|. We expect |index| as untagged input and 24 // |result| as untagged output. 25 static void Generate(MacroAssembler* masm, 26 Register string, 27 Register index, 28 Register result, 29 Label* call_runtime); 30 31 private: 32 DISALLOW_COPY_AND_ASSIGN(StringCharLoadGenerator); 33}; 34 35 36class MathExpGenerator : public AllStatic { 37 public: 38 // Register input isn't modified. All other registers are clobbered. 39 static void EmitMathExp(MacroAssembler* masm, 40 DoubleRegister input, 41 DoubleRegister result, 42 DoubleRegister double_scratch1, 43 DoubleRegister double_scratch2, 44 Register temp1, 45 Register temp2, 46 Register temp3); 47 48 private: 49 DISALLOW_COPY_AND_ASSIGN(MathExpGenerator); 50}; 51 52} } // namespace v8::internal 53 54#endif // V8_MIPS_CODEGEN_MIPS_H_ 55