25959abf79
This makes sure that only the "asm-js.h" header is exposed to outside the directory holding the asm.js validator. It ensures that internals don't leak out of that component, unless they are explicitly exposed through the defined interface. R=clemensh@chromium.org BUG=v8:6127 Change-Id: I7c41782254cfce102af8edf4356205cfca904e60 Reviewed-on: https://chromium-review.googlesource.com/496147 Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#45125}
112 lines
3.8 KiB
C
112 lines
3.8 KiB
C
// Copyright 2017 the V8 project authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#ifndef V8_ASMJS_ASM_NAMES_H_
|
|
#define V8_ASMJS_ASM_NAMES_H_
|
|
|
|
// V(stdlib.Math.<name>, constant-value)
|
|
#define STDLIB_MATH_VALUE_LIST(V) \
|
|
V(E, 2.718281828459045) \
|
|
V(LN10, 2.302585092994046) \
|
|
V(LN2, 0.6931471805599453) \
|
|
V(LOG2E, 1.4426950408889634) \
|
|
V(LOG10E, 0.4342944819032518) \
|
|
V(PI, 3.141592653589793) \
|
|
V(SQRT1_2, 0.7071067811865476) \
|
|
V(SQRT2, 1.4142135623730951)
|
|
|
|
// V(stdlib.Math.<name>, Name, wasm-opcode, asm-js-type)
|
|
#define STDLIB_MATH_FUNCTION_MONOMORPHIC_LIST(V) \
|
|
V(acos, Acos, kExprF64Acos, dq2d) \
|
|
V(asin, Asin, kExprF64Asin, dq2d) \
|
|
V(atan, Atan, kExprF64Atan, dq2d) \
|
|
V(cos, Cos, kExprF64Cos, dq2d) \
|
|
V(sin, Sin, kExprF64Sin, dq2d) \
|
|
V(tan, Tan, kExprF64Tan, dq2d) \
|
|
V(exp, Exp, kExprF64Exp, dq2d) \
|
|
V(log, Log, kExprF64Log, dq2d) \
|
|
V(atan2, Atan2, kExprF64Atan2, dqdq2d) \
|
|
V(pow, Pow, kExprF64Pow, dqdq2d) \
|
|
V(imul, Imul, kExprI32Mul, ii2s) \
|
|
V(clz32, Clz32, kExprI32Clz, i2s)
|
|
|
|
// V(stdlib.Math.<name>, Name, unused, asm-js-type)
|
|
#define STDLIB_MATH_FUNCTION_CEIL_LIKE_LIST(V) \
|
|
V(ceil, Ceil, x, ceil_like) \
|
|
V(floor, Floor, x, ceil_like) \
|
|
V(sqrt, Sqrt, x, ceil_like)
|
|
|
|
// V(stdlib.Math.<name>, Name, unused, asm-js-type)
|
|
#define STDLIB_MATH_FUNCTION_LIST(V) \
|
|
V(min, Min, x, minmax) \
|
|
V(max, Max, x, minmax) \
|
|
V(abs, Abs, x, abs) \
|
|
V(fround, Fround, x, fround) \
|
|
STDLIB_MATH_FUNCTION_MONOMORPHIC_LIST(V) \
|
|
STDLIB_MATH_FUNCTION_CEIL_LIKE_LIST(V)
|
|
|
|
// V(stdlib.<name>, wasm-load-type, wasm-store-type, wasm-type)
|
|
#define STDLIB_ARRAY_TYPE_LIST(V) \
|
|
V(Int8Array, Mem8S, Mem8, I32) \
|
|
V(Uint8Array, Mem8U, Mem8, I32) \
|
|
V(Int16Array, Mem16S, Mem16, I32) \
|
|
V(Uint16Array, Mem16U, Mem16, I32) \
|
|
V(Int32Array, Mem, Mem, I32) \
|
|
V(Uint32Array, Mem, Mem, I32) \
|
|
V(Float32Array, Mem, Mem, F32) \
|
|
V(Float64Array, Mem, Mem, F64)
|
|
|
|
#define STDLIB_OTHER_LIST(V) \
|
|
V(Infinity) \
|
|
V(NaN) \
|
|
V(Math)
|
|
|
|
// clang-format off (for return)
|
|
#define KEYWORD_NAME_LIST(V) \
|
|
V(arguments) \
|
|
V(break) \
|
|
V(case) \
|
|
V(const) \
|
|
V(continue) \
|
|
V(default) \
|
|
V(do) \
|
|
V(else) \
|
|
V(eval) \
|
|
V(for) \
|
|
V(function) \
|
|
V(if) \
|
|
V(new) \
|
|
V(return ) \
|
|
V(switch) \
|
|
V(var) \
|
|
V(while)
|
|
// clang-format on
|
|
|
|
// V(token-string, token-name)
|
|
#define LONG_SYMBOL_NAME_LIST(V) \
|
|
V("<=", LE) \
|
|
V(">=", GE) \
|
|
V("==", EQ) \
|
|
V("!=", NE) \
|
|
V("<<", SHL) \
|
|
V(">>", SAR) \
|
|
V(">>>", SHR) \
|
|
V("'use asm'", UseAsm)
|
|
|
|
// clang-format off
|
|
#define SIMPLE_SINGLE_TOKEN_LIST(V) \
|
|
V('+') V('-') V('*') V('%') V('~') V('^') V('&') V('|') V('(') V(')') \
|
|
V('[') V(']') V('{') V('}') V(':') V(';') V(',') V('?')
|
|
// clang-format on
|
|
|
|
// V(name, value, string-name)
|
|
#define SPECIAL_TOKEN_LIST(V) \
|
|
V(kUninitialized, 0, "{uninitalized}") \
|
|
V(kEndOfInput, -1, "{end of input}") \
|
|
V(kParseError, -2, "{parse error}") \
|
|
V(kUnsigned, -3, "{unsigned value}") \
|
|
V(kDouble, -4, "{double value}")
|
|
|
|
#endif // V8_ASMJS_ASM_NAMES_H_
|