1f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// Copyright 2016 the V8 project authors. All rights reserved.
2f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// found in the LICENSE file.
4f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch
5f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#ifndef V8_ASMJS_ASM_JS_H_
6f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define V8_ASMJS_ASM_JS_H_
7f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch
8f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch#include "src/globals.h"
9f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch
10f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochnamespace v8 {
11f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochnamespace internal {
12f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
13f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochclass JSArrayBuffer;
14f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochclass ParseInfo;
15f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
16f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// Interface to compile and instantiate for asmjs.
17f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochclass AsmJs {
18f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch public:
19f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  static MaybeHandle<FixedArray> ConvertAsmToWasm(ParseInfo* info);
20f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  static bool IsStdlibValid(Isolate* isolate, Handle<FixedArray> wasm_data,
21f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch                            Handle<JSReceiver> stdlib);
22f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  static MaybeHandle<Object> InstantiateAsmWasm(Isolate* isolate,
23f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch                                                Handle<FixedArray> wasm_data,
24f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch                                                Handle<JSArrayBuffer> memory,
25f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch                                                Handle<JSReceiver> foreign);
26f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch};
27f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch
28f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}  // namespace internal
29f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}  // namespace v8
30f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#endif
31