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