diff options
Diffstat (limited to 'deps/v8/src/objects/builtin-function-id.h')
-rw-r--r-- | deps/v8/src/objects/builtin-function-id.h | 217 |
1 files changed, 217 insertions, 0 deletions
diff --git a/deps/v8/src/objects/builtin-function-id.h b/deps/v8/src/objects/builtin-function-id.h new file mode 100644 index 0000000000..ed54811a2b --- /dev/null +++ b/deps/v8/src/objects/builtin-function-id.h @@ -0,0 +1,217 @@ +// Copyright 2018 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_OBJECTS_BUILTIN_FUNCTION_ID_H_ +#define V8_OBJECTS_BUILTIN_FUNCTION_ID_H_ + +#include <stdint.h> + +namespace v8 { +namespace internal { + +// List of builtin functions we want to identify to improve code +// generation. +// +// Each entry has a name of a global object property holding an object +// optionally followed by ".prototype", a name of a builtin function +// on the object (the one the id is set for), and a label. +// +// Installation of ids for the selected builtin functions is handled +// by the bootstrapper. +#define FUNCTIONS_WITH_ID_LIST(V) \ + V(Array, isArray, ArrayIsArray) \ + V(Array.prototype, concat, ArrayConcat) \ + V(Array.prototype, every, ArrayEvery) \ + V(Array.prototype, fill, ArrayFill) \ + V(Array.prototype, filter, ArrayFilter) \ + V(Array.prototype, findIndex, ArrayFindIndex) \ + V(Array.prototype, forEach, ArrayForEach) \ + V(Array.prototype, includes, ArrayIncludes) \ + V(Array.prototype, indexOf, ArrayIndexOf) \ + V(Array.prototype, join, ArrayJoin) \ + V(Array.prototype, lastIndexOf, ArrayLastIndexOf) \ + V(Array.prototype, map, ArrayMap) \ + V(Array.prototype, pop, ArrayPop) \ + V(Array.prototype, push, ArrayPush) \ + V(Array.prototype, reverse, ArrayReverse) \ + V(Array.prototype, shift, ArrayShift) \ + V(Array.prototype, slice, ArraySlice) \ + V(Array.prototype, some, ArraySome) \ + V(Array.prototype, splice, ArraySplice) \ + V(Array.prototype, unshift, ArrayUnshift) \ + V(Date, now, DateNow) \ + V(Date.prototype, getDate, DateGetDate) \ + V(Date.prototype, getDay, DateGetDay) \ + V(Date.prototype, getFullYear, DateGetFullYear) \ + V(Date.prototype, getHours, DateGetHours) \ + V(Date.prototype, getMilliseconds, DateGetMilliseconds) \ + V(Date.prototype, getMinutes, DateGetMinutes) \ + V(Date.prototype, getMonth, DateGetMonth) \ + V(Date.prototype, getSeconds, DateGetSeconds) \ + V(Date.prototype, getTime, DateGetTime) \ + V(Function.prototype, apply, FunctionApply) \ + V(Function.prototype, bind, FunctionBind) \ + V(Function.prototype, call, FunctionCall) \ + V(Object, assign, ObjectAssign) \ + V(Object, create, ObjectCreate) \ + V(Object, is, ObjectIs) \ + V(Object.prototype, hasOwnProperty, ObjectHasOwnProperty) \ + V(Object.prototype, isPrototypeOf, ObjectIsPrototypeOf) \ + V(Object.prototype, toString, ObjectToString) \ + V(RegExp.prototype, compile, RegExpCompile) \ + V(RegExp.prototype, exec, RegExpExec) \ + V(RegExp.prototype, test, RegExpTest) \ + V(RegExp.prototype, toString, RegExpToString) \ + V(String.prototype, charCodeAt, StringCharCodeAt) \ + V(String.prototype, charAt, StringCharAt) \ + V(String.prototype, codePointAt, StringCodePointAt) \ + V(String.prototype, concat, StringConcat) \ + V(String.prototype, endsWith, StringEndsWith) \ + V(String.prototype, includes, StringIncludes) \ + V(String.prototype, indexOf, StringIndexOf) \ + V(String.prototype, lastIndexOf, StringLastIndexOf) \ + V(String.prototype, repeat, StringRepeat) \ + V(String.prototype, slice, StringSlice) \ + V(String.prototype, startsWith, StringStartsWith) \ + V(String.prototype, substr, StringSubstr) \ + V(String.prototype, substring, StringSubstring) \ + V(String.prototype, toLowerCase, StringToLowerCase) \ + V(String.prototype, toString, StringToString) \ + V(String.prototype, toUpperCase, StringToUpperCase) \ + V(String.prototype, trim, StringTrim) \ + V(String.prototype, trimLeft, StringTrimStart) \ + V(String.prototype, trimRight, StringTrimEnd) \ + V(String.prototype, valueOf, StringValueOf) \ + V(String, fromCharCode, StringFromCharCode) \ + V(String, fromCodePoint, StringFromCodePoint) \ + V(String, raw, StringRaw) \ + V(Math, random, MathRandom) \ + V(Math, floor, MathFloor) \ + V(Math, round, MathRound) \ + V(Math, ceil, MathCeil) \ + V(Math, abs, MathAbs) \ + V(Math, log, MathLog) \ + V(Math, log1p, MathLog1p) \ + V(Math, log2, MathLog2) \ + V(Math, log10, MathLog10) \ + V(Math, cbrt, MathCbrt) \ + V(Math, exp, MathExp) \ + V(Math, expm1, MathExpm1) \ + V(Math, sqrt, MathSqrt) \ + V(Math, pow, MathPow) \ + V(Math, max, MathMax) \ + V(Math, min, MathMin) \ + V(Math, cos, MathCos) \ + V(Math, cosh, MathCosh) \ + V(Math, sign, MathSign) \ + V(Math, sin, MathSin) \ + V(Math, sinh, MathSinh) \ + V(Math, tan, MathTan) \ + V(Math, tanh, MathTanh) \ + V(Math, acos, MathAcos) \ + V(Math, acosh, MathAcosh) \ + V(Math, asin, MathAsin) \ + V(Math, asinh, MathAsinh) \ + V(Math, atan, MathAtan) \ + V(Math, atan2, MathAtan2) \ + V(Math, atanh, MathAtanh) \ + V(Math, imul, MathImul) \ + V(Math, clz32, MathClz32) \ + V(Math, fround, MathFround) \ + V(Math, trunc, MathTrunc) \ + V(Number, isFinite, NumberIsFinite) \ + V(Number, isInteger, NumberIsInteger) \ + V(Number, isNaN, NumberIsNaN) \ + V(Number, isSafeInteger, NumberIsSafeInteger) \ + V(Number, parseFloat, NumberParseFloat) \ + V(Number, parseInt, NumberParseInt) \ + V(Number.prototype, toString, NumberToString) \ + V(Map.prototype, clear, MapClear) \ + V(Map.prototype, delete, MapDelete) \ + V(Map.prototype, entries, MapEntries) \ + V(Map.prototype, forEach, MapForEach) \ + V(Map.prototype, has, MapHas) \ + V(Map.prototype, keys, MapKeys) \ + V(Map.prototype, get, MapGet) \ + V(Map.prototype, set, MapSet) \ + V(Map.prototype, values, MapValues) \ + V(Set.prototype, add, SetAdd) \ + V(Set.prototype, clear, SetClear) \ + V(Set.prototype, delete, SetDelete) \ + V(Set.prototype, entries, SetEntries) \ + V(Set.prototype, forEach, SetForEach) \ + V(Set.prototype, has, SetHas) \ + V(Set.prototype, values, SetValues) \ + V(WeakMap.prototype, delete, WeakMapDelete) \ + V(WeakMap.prototype, has, WeakMapHas) \ + V(WeakMap.prototype, set, WeakMapSet) \ + V(WeakSet.prototype, add, WeakSetAdd) \ + V(WeakSet.prototype, delete, WeakSetDelete) \ + V(WeakSet.prototype, has, WeakSetHas) + +#define ATOMIC_FUNCTIONS_WITH_ID_LIST(V) \ + V(Atomics, load, AtomicsLoad) \ + V(Atomics, store, AtomicsStore) \ + V(Atomics, exchange, AtomicsExchange) \ + V(Atomics, compareExchange, AtomicsCompareExchange) \ + V(Atomics, add, AtomicsAdd) \ + V(Atomics, sub, AtomicsSub) \ + V(Atomics, and, AtomicsAnd) \ + V(Atomics, or, AtomicsOr) \ + V(Atomics, xor, AtomicsXor) + +enum class BuiltinFunctionId : uint8_t { + kArrayConstructor, +#define DECL_FUNCTION_ID(ignored1, ignore2, name) k##name, + FUNCTIONS_WITH_ID_LIST(DECL_FUNCTION_ID) + ATOMIC_FUNCTIONS_WITH_ID_LIST(DECL_FUNCTION_ID) +#undef DECL_FUNCTION_ID + // These are manually assigned to special getters during bootstrapping. + kArrayBufferByteLength, + kArrayBufferIsView, + kArrayEntries, + kArrayKeys, + kArrayValues, + kArrayIteratorNext, + kBigIntConstructor, + kMapSize, + kSetSize, + kMapIteratorNext, + kSetIteratorNext, + kDataViewBuffer, + kDataViewByteLength, + kDataViewByteOffset, + kFunctionHasInstance, + kGlobalDecodeURI, + kGlobalDecodeURIComponent, + kGlobalEncodeURI, + kGlobalEncodeURIComponent, + kGlobalEscape, + kGlobalUnescape, + kGlobalIsFinite, + kGlobalIsNaN, + kNumberConstructor, + kSymbolConstructor, + kSymbolPrototypeToString, + kSymbolPrototypeValueOf, + kTypedArrayByteLength, + kTypedArrayByteOffset, + kTypedArrayEntries, + kTypedArrayKeys, + kTypedArrayLength, + kTypedArrayToStringTag, + kTypedArrayValues, + kSharedArrayBufferByteLength, + kStringConstructor, + kStringIterator, + kStringIteratorNext, + kStringToLowerCaseIntl, + kStringToUpperCaseIntl, + kInvalidBuiltinFunctionId = static_cast<uint8_t>(-1), +}; + +} // namespace internal +} // namespace v8 + +#endif // V8_OBJECTS_BUILTIN_FUNCTION_ID_H_ |