144bc7080a85cc25bff3b9b77cd53f7beffab711bkarlklose@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. 47c537e2abe09729ed6cb827b4dd206470d8c4a42ager@chromium.org 55ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org#ifndef V8_ARM_CODEGEN_ARM_H_ 65ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org#define V8_ARM_CODEGEN_ARM_H_ 77c537e2abe09729ed6cb827b4dd206470d8c4a42ager@chromium.org 8196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "src/ast.h" 9a8702c210b949f35c64d8e4aa01bb6d525086c85machenbach@chromium.org#include "src/macro-assembler.h" 10357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org 1171affb54842da76b24f0bb3184e9f0960523f89dkasperl@chromium.orgnamespace v8 { 1271affb54842da76b24f0bb3184e9f0960523f89dkasperl@chromium.orgnamespace internal { 137c537e2abe09729ed6cb827b4dd206470d8c4a42ager@chromium.org 147c537e2abe09729ed6cb827b4dd206470d8c4a42ager@chromium.org 153bf7b91c90e9bff46f53eec55055d2d1a1949215ager@chromium.orgenum TypeofState { INSIDE_TYPEOF, NOT_INSIDE_TYPEOF }; 16013f3e12d3af426bf5545b5f457aa08ee98bdca2fschneider@chromium.org 177be3c996bea370e151c9fe4ecf7f779cdc5f87adkasperl@chromium.org 181b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.orgclass StringCharLoadGenerator : public AllStatic { 191b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.org public: 201b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.org // Generates the code for handling different string types and loading the 211b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.org // indexed character into |result|. We expect |index| as untagged input and 221b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.org // |result| as untagged output. 231b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.org static void Generate(MacroAssembler* masm, 241b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.org Register string, 251b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.org Register index, 261b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.org Register result, 271b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.org Label* call_runtime); 281b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.org 291b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.org private: 301b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.org DISALLOW_COPY_AND_ASSIGN(StringCharLoadGenerator); 311b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.org}; 321b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.org 331f34ad3eadf9b0e6b8ed415817d276f54dd6d06bdanno@chromium.org 341f34ad3eadf9b0e6b8ed415817d276f54dd6d06bdanno@chromium.orgclass MathExpGenerator : public AllStatic { 351f34ad3eadf9b0e6b8ed415817d276f54dd6d06bdanno@chromium.org public: 363d079fe881245e49c7ba803b54b4fe6d4b46113cmachenbach@chromium.org // Register input isn't modified. All other registers are clobbered. 371f34ad3eadf9b0e6b8ed415817d276f54dd6d06bdanno@chromium.org static void EmitMathExp(MacroAssembler* masm, 38a6bbcc801f63c451f814d6da77a1a48fba3d36c6yangguo@chromium.org DwVfpRegister input, 39a6bbcc801f63c451f814d6da77a1a48fba3d36c6yangguo@chromium.org DwVfpRegister result, 40a6bbcc801f63c451f814d6da77a1a48fba3d36c6yangguo@chromium.org DwVfpRegister double_scratch1, 41a6bbcc801f63c451f814d6da77a1a48fba3d36c6yangguo@chromium.org DwVfpRegister double_scratch2, 421f34ad3eadf9b0e6b8ed415817d276f54dd6d06bdanno@chromium.org Register temp1, 431f34ad3eadf9b0e6b8ed415817d276f54dd6d06bdanno@chromium.org Register temp2, 441f34ad3eadf9b0e6b8ed415817d276f54dd6d06bdanno@chromium.org Register temp3); 451f34ad3eadf9b0e6b8ed415817d276f54dd6d06bdanno@chromium.org 461f34ad3eadf9b0e6b8ed415817d276f54dd6d06bdanno@chromium.org private: 471f34ad3eadf9b0e6b8ed415817d276f54dd6d06bdanno@chromium.org DISALLOW_COPY_AND_ASSIGN(MathExpGenerator); 481f34ad3eadf9b0e6b8ed415817d276f54dd6d06bdanno@chromium.org}; 491f34ad3eadf9b0e6b8ed415817d276f54dd6d06bdanno@chromium.org 507c537e2abe09729ed6cb827b4dd206470d8c4a42ager@chromium.org} } // namespace v8::internal 517c537e2abe09729ed6cb827b4dd206470d8c4a42ager@chromium.org 525ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org#endif // V8_ARM_CODEGEN_ARM_H_ 53