diff options
Diffstat (limited to 'deps/v8/src/js/macros.py')
-rw-r--r-- | deps/v8/src/js/macros.py | 76 |
1 files changed, 15 insertions, 61 deletions
diff --git a/deps/v8/src/js/macros.py b/deps/v8/src/js/macros.py index a4c7f53293..cdc3d0ae0c 100644 --- a/deps/v8/src/js/macros.py +++ b/deps/v8/src/js/macros.py @@ -32,17 +32,6 @@ define NONE = 0; define READ_ONLY = 1; define DONT_ENUM = 2; define DONT_DELETE = 4; -define NEW_ONE_BYTE_STRING = true; -define NEW_TWO_BYTE_STRING = false; - -# Constants used for getter and setter operations. -define GETTER = 0; -define SETTER = 1; - -# Safe maximum number of arguments to push to stack, when multiplied by -# pointer size. Used by Function.prototype.apply(), Reflect.apply() and -# Reflect.construct(). -define kSafeArgumentsLength = 0x800000; # 2^53 - 1 define kMaxSafeInteger = 9007199254740991; @@ -50,10 +39,6 @@ define kMaxSafeInteger = 9007199254740991; # 2^32 - 1 define kMaxUint32 = 4294967295; -# Strict mode flags for passing to %SetProperty -define kSloppyMode = 0; -define kStrictMode = 1; - # Native cache ids. define STRING_TO_REGEXP_CACHE_ID = 0; @@ -65,7 +50,6 @@ define STRING_TO_REGEXP_CACHE_ID = 0; macro IS_ARRAY(arg) = (%_IsArray(arg)); macro IS_ARRAYBUFFER(arg) = (%_ClassOf(arg) === 'ArrayBuffer'); macro IS_BOOLEAN(arg) = (typeof(arg) === 'boolean'); -macro IS_BOOLEAN_WRAPPER(arg) = (%_ClassOf(arg) === 'Boolean'); macro IS_DATAVIEW(arg) = (%_ClassOf(arg) === 'DataView'); macro IS_DATE(arg) = (%IsDate(arg)); macro IS_ERROR(arg) = (%_ClassOf(arg) === 'Error'); @@ -77,7 +61,6 @@ macro IS_MAP_ITERATOR(arg) = (%_ClassOf(arg) === 'Map Iterator'); macro IS_NULL(arg) = (arg === null); macro IS_NULL_OR_UNDEFINED(arg) = (arg == null); macro IS_NUMBER(arg) = (typeof(arg) === 'number'); -macro IS_NUMBER_WRAPPER(arg) = (%_ClassOf(arg) === 'Number'); macro IS_OBJECT(arg) = (typeof(arg) === 'object'); macro IS_PROXY(arg) = (%_IsJSProxy(arg)); macro IS_REGEXP(arg) = (%_IsRegExp(arg)); @@ -87,9 +70,7 @@ macro IS_SET_ITERATOR(arg) = (%_ClassOf(arg) === 'Set Iterator'); macro IS_SHAREDARRAYBUFFER(arg) = (%_ClassOf(arg) === 'SharedArrayBuffer'); macro IS_SIMD_VALUE(arg) = (%IsSimdValue(arg)); macro IS_STRING(arg) = (typeof(arg) === 'string'); -macro IS_STRING_WRAPPER(arg) = (%_ClassOf(arg) === 'String'); macro IS_SYMBOL(arg) = (typeof(arg) === 'symbol'); -macro IS_SYMBOL_WRAPPER(arg) = (%_ClassOf(arg) === 'Symbol'); macro IS_TYPEDARRAY(arg) = (%_IsTypedArray(arg)); macro IS_UNDEFINED(arg) = (arg === (void 0)); macro IS_WEAKMAP(arg) = (%_ClassOf(arg) === 'WeakMap'); @@ -103,27 +84,21 @@ macro IS_CALLABLE(arg) = (typeof(arg) === 'function'); # Macro for ES6 CheckObjectCoercible # Will throw a TypeError of the form "[functionName] called on null or undefined". -macro CHECK_OBJECT_COERCIBLE(arg, functionName) = if (IS_NULL(%IS_VAR(arg)) || IS_UNDEFINED(arg)) throw MakeTypeError(kCalledOnNullOrUndefined, functionName); +macro CHECK_OBJECT_COERCIBLE(arg, functionName) = if (IS_NULL(%IS_VAR(arg)) || IS_UNDEFINED(arg)) throw %make_type_error(kCalledOnNullOrUndefined, functionName); # Inline macros. Use %IS_VAR to make sure arg is evaluated only once. macro NUMBER_IS_NAN(arg) = (!%_IsSmi(%IS_VAR(arg)) && !(arg == arg)); macro NUMBER_IS_FINITE(arg) = (%_IsSmi(%IS_VAR(arg)) || ((arg == arg) && (arg != 1/0) && (arg != -1/0))); macro TO_BOOLEAN(arg) = (!!(arg)); macro TO_INTEGER(arg) = (%_ToInteger(arg)); -macro TO_INTEGER_MAP_MINUS_ZERO(arg) = (%_IsSmi(%IS_VAR(arg)) ? arg : %NumberToIntegerMapMinusZero(arg)); macro TO_INT32(arg) = ((arg) | 0); macro TO_UINT32(arg) = ((arg) >>> 0); +macro INVERT_NEG_ZERO(arg) = ((arg) + 0); macro TO_LENGTH(arg) = (%_ToLength(arg)); macro TO_STRING(arg) = (%_ToString(arg)); macro TO_NUMBER(arg) = (%_ToNumber(arg)); macro TO_OBJECT(arg) = (%_ToObject(arg)); -macro TO_PRIMITIVE(arg) = (%_ToPrimitive(arg)); -macro TO_PRIMITIVE_NUMBER(arg) = (%_ToPrimitive_Number(arg)); -macro TO_PRIMITIVE_STRING(arg) = (%_ToPrimitive_String(arg)); -macro TO_NAME(arg) = (%_ToName(arg)); -macro JSON_NUMBER_TO_STRING(arg) = ((%_IsSmi(%IS_VAR(arg)) || arg - arg == 0) ? %_NumberToString(arg) : "null"); macro HAS_OWN_PROPERTY(obj, key) = (%_Call(ObjectHasOwnProperty, obj, key)); -macro HAS_INDEX(array, index, is_array) = ((is_array && %_HasFastPackedElements(%IS_VAR(array)) && (index < array.length)) || (index in array)); # Private names. macro IS_PRIVATE(sym) = (%SymbolIsPrivate(sym)); @@ -132,6 +107,9 @@ macro HAS_DEFINED_PRIVATE(obj, sym) = (!IS_UNDEFINED(obj[sym])); macro GET_PRIVATE(obj, sym) = (obj[sym]); macro SET_PRIVATE(obj, sym, val) = (obj[sym] = val); +# To avoid ES2015 Function name inference. +macro ANONYMOUS_FUNCTION(fn) = (0, (fn)); + # Constants. The compiler constant folds them. define INFINITY = (1/0); define UNDEFINED = (void 0); @@ -139,9 +117,18 @@ define UNDEFINED = (void 0); # Macros implemented in Python. python macro CHAR_CODE(str) = ord(str[1]); -# Constants used on an array to implement the properties of the RegExp object. +# Layout of internal RegExpLastMatchInfo object. define REGEXP_NUMBER_OF_CAPTURES = 0; +define REGEXP_LAST_SUBJECT = 1; +define REGEXP_LAST_INPUT = 2; define REGEXP_FIRST_CAPTURE = 3; +define CAPTURE0 = 3; # Aliases REGEXP_FIRST_CAPTURE. +define CAPTURE1 = 4; + +macro NUMBER_OF_CAPTURES(array) = ((array)[REGEXP_NUMBER_OF_CAPTURES]); +macro LAST_SUBJECT(array) = ((array)[REGEXP_LAST_SUBJECT]); +macro LAST_INPUT(array) = ((array)[REGEXP_LAST_INPUT]); +macro CAPTURE(index) = (REGEXP_FIRST_CAPTURE + (index)); # Macros for internal slot access. macro REGEXP_GLOBAL(regexp) = (%_RegExpFlags(regexp) & 1); @@ -151,20 +138,6 @@ macro REGEXP_STICKY(regexp) = (%_RegExpFlags(regexp) & 8); macro REGEXP_UNICODE(regexp) = (%_RegExpFlags(regexp) & 16); macro REGEXP_SOURCE(regexp) = (%_RegExpSource(regexp)); -# We can't put macros in macros so we use constants here. -# REGEXP_NUMBER_OF_CAPTURES -macro NUMBER_OF_CAPTURES(array) = ((array)[0]); - -# Last input and last subject of regexp matches. -define LAST_SUBJECT_INDEX = 1; -macro LAST_SUBJECT(array) = ((array)[1]); -macro LAST_INPUT(array) = ((array)[2]); - -# REGEXP_FIRST_CAPTURE -macro CAPTURE(index) = (3 + (index)); -define CAPTURE0 = 3; -define CAPTURE1 = 4; - # For the regexp capture override array. This has the same # format as the arguments to a function called from # String.prototype.replace. @@ -174,16 +147,6 @@ macro OVERRIDE_SUBJECT(override) = ((override)[(override).length - 1]); # 1-based so index of 1 returns the first capture macro OVERRIDE_CAPTURE(override, index) = ((override)[(index)]); -# PropertyDescriptor return value indices - must match -# PropertyDescriptorIndices in runtime-object.cc. -define IS_ACCESSOR_INDEX = 0; -define VALUE_INDEX = 1; -define GETTER_INDEX = 2; -define SETTER_INDEX = 3; -define WRITABLE_INDEX = 4; -define ENUMERABLE_INDEX = 5; -define CONFIGURABLE_INDEX = 6; - # For messages.js # Matches Script::Type from objects.h define TYPE_NATIVE = 0; @@ -195,9 +158,6 @@ define COMPILATION_TYPE_HOST = 0; define COMPILATION_TYPE_EVAL = 1; define COMPILATION_TYPE_JSON = 2; -# Matches Messages::kNoLineNumberInfo from v8.h -define kNoLineNumberInfo = 0; - # Must match PropertyFilter in property-details.h define PROPERTY_FILTER_NONE = 0; define PROPERTY_FILTER_ONLY_ENUMERABLE = 2; @@ -238,11 +198,6 @@ define NOT_FOUND = -1; # Check whether debug is active. define DEBUG_IS_ACTIVE = (%_DebugIsActive() != 0); -macro DEBUG_PREPARE_STEP_IN_IF_STEPPING(function) = if (%_DebugIsActive() != 0) %DebugPrepareStepInIfStepping(function); - -# SharedFlag equivalents -define kNotShared = false; -define kShared = true; # UseCounters from include/v8.h define kUseAsm = 0; @@ -251,7 +206,6 @@ define kLegacyConst = 2; define kMarkDequeOverflow = 3; define kStoreBufferOverflow = 4; define kSlotsBufferOverflow = 5; -define kObjectObserve = 6; define kForcedGC = 7; define kSloppyMode = 8; define kStrictMode = 9; |