1864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// Copyright 2011 the V8 project authors. All rights reserved. 2864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// Use of this source code is governed by a BSD-style license that can be 3864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// found in the LICENSE file. 4864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 5864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org#ifndef V8_X87_CODEGEN_X87_H_ 6864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org#define V8_X87_CODEGEN_X87_H_ 7864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 8196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "src/ast.h" 96474a1cfee1cdad45de5cc96960085e1c7daf11cmachenbach@chromium.org#include "src/macro-assembler.h" 10864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 11864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.orgnamespace v8 { 12864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.orgnamespace internal { 13864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 14864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 15864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.orgclass StringCharLoadGenerator : public AllStatic { 16864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org public: 17864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org // Generates the code for handling different string types and loading the 18864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org // indexed character into |result|. We expect |index| as untagged input and 19864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org // |result| as untagged output. 20864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org static void Generate(MacroAssembler* masm, 21864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org Factory* factory, 22864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org Register string, 23864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org Register index, 24864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org Register result, 25864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org Label* call_runtime); 26864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 27864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org private: 28864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org DISALLOW_COPY_AND_ASSIGN(StringCharLoadGenerator); 29864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org}; 30864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 31864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org} } // namespace v8::internal 32864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 33864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org#endif // V8_X87_CODEGEN_X87_H_ 34