aboutsummaryrefslogtreecommitdiff
path: root/deps/v8/src/globals.h
diff options
context:
space:
mode:
authorMichaël Zasso <targos@protonmail.com>2017-06-06 10:28:14 +0200
committerMichaël Zasso <targos@protonmail.com>2017-06-07 10:33:31 +0200
commit3dc8c3bed4cf3a77607edbb0b015e33f8b60fc09 (patch)
tree9dee56e142638b34f1eccbd0ad88c3bce5377c29 /deps/v8/src/globals.h
parent91a1bbe3055a660194ca4d403795aa0c03e9d056 (diff)
downloadandroid-node-v8-3dc8c3bed4cf3a77607edbb0b015e33f8b60fc09.tar.gz
android-node-v8-3dc8c3bed4cf3a77607edbb0b015e33f8b60fc09.tar.bz2
android-node-v8-3dc8c3bed4cf3a77607edbb0b015e33f8b60fc09.zip
deps: update V8 to 5.9.211.32
PR-URL: https://github.com/nodejs/node/pull/13263 Reviewed-By: Gibson Fahnestock <gibfahn@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com> Reviewed-By: Myles Borins <myles.borins@gmail.com>
Diffstat (limited to 'deps/v8/src/globals.h')
-rw-r--r--deps/v8/src/globals.h123
1 files changed, 100 insertions, 23 deletions
diff --git a/deps/v8/src/globals.h b/deps/v8/src/globals.h
index a90e624ec5..3b4c2a602e 100644
--- a/deps/v8/src/globals.h
+++ b/deps/v8/src/globals.h
@@ -118,6 +118,7 @@ namespace internal {
#define V8_DOUBLE_FIELDS_UNBOXING 0
#endif
+#define V8_CONCURRENT_MARKING 0
typedef uint8_t byte;
typedef byte* Address;
@@ -671,13 +672,6 @@ enum InlineCacheState {
GENERIC,
};
-enum CacheHolderFlag {
- kCacheOnPrototype,
- kCacheOnPrototypeReceiverIsDictionary,
- kCacheOnPrototypeReceiverIsPrimitive,
- kCacheOnReceiver
-};
-
enum WhereToStart { kStartAtReceiver, kStartAtPrototype };
// The Store Buffer (GC).
@@ -785,6 +779,7 @@ enum CpuFeature {
MIPSr1,
MIPSr2,
MIPSr6,
+ MIPS_SIMD, // MSA instructions
// ARM64
ALWAYS_ALIGN_CSP,
// PPC
@@ -1107,7 +1102,11 @@ enum FunctionKind : uint16_t {
kClassConstructor =
kBaseConstructor | kDerivedConstructor | kDefaultConstructor,
kAsyncArrowFunction = kArrowFunction | kAsyncFunction,
- kAsyncConciseMethod = kAsyncFunction | kConciseMethod
+ kAsyncConciseMethod = kAsyncFunction | kConciseMethod,
+
+ // https://tc39.github.io/proposal-async-iteration/
+ kAsyncConciseGeneratorMethod = kAsyncFunction | kConciseGeneratorMethod,
+ kAsyncGeneratorFunction = kAsyncFunction | kGeneratorFunction
};
inline bool IsValidFunctionKind(FunctionKind kind) {
@@ -1126,29 +1125,37 @@ inline bool IsValidFunctionKind(FunctionKind kind) {
kind == FunctionKind::kDerivedConstructor ||
kind == FunctionKind::kAsyncFunction ||
kind == FunctionKind::kAsyncArrowFunction ||
- kind == FunctionKind::kAsyncConciseMethod;
+ kind == FunctionKind::kAsyncConciseMethod ||
+ kind == FunctionKind::kAsyncConciseGeneratorMethod ||
+ kind == FunctionKind::kAsyncGeneratorFunction;
}
inline bool IsArrowFunction(FunctionKind kind) {
DCHECK(IsValidFunctionKind(kind));
- return kind & FunctionKind::kArrowFunction;
+ return (kind & FunctionKind::kArrowFunction) != 0;
}
inline bool IsGeneratorFunction(FunctionKind kind) {
DCHECK(IsValidFunctionKind(kind));
- return kind & FunctionKind::kGeneratorFunction;
+ return (kind & FunctionKind::kGeneratorFunction) != 0;
}
inline bool IsModule(FunctionKind kind) {
DCHECK(IsValidFunctionKind(kind));
- return kind & FunctionKind::kModule;
+ return (kind & FunctionKind::kModule) != 0;
}
inline bool IsAsyncFunction(FunctionKind kind) {
DCHECK(IsValidFunctionKind(kind));
- return kind & FunctionKind::kAsyncFunction;
+ return (kind & FunctionKind::kAsyncFunction) != 0;
+}
+
+inline bool IsAsyncGeneratorFunction(FunctionKind kind) {
+ DCHECK(IsValidFunctionKind(kind));
+ const FunctionKind kMask = FunctionKind::kAsyncGeneratorFunction;
+ return (kind & kMask) == kMask;
}
inline bool IsResumableFunction(FunctionKind kind) {
@@ -1157,49 +1164,48 @@ inline bool IsResumableFunction(FunctionKind kind) {
inline bool IsConciseMethod(FunctionKind kind) {
DCHECK(IsValidFunctionKind(kind));
- return kind & FunctionKind::kConciseMethod;
+ return (kind & FunctionKind::kConciseMethod) != 0;
}
inline bool IsGetterFunction(FunctionKind kind) {
DCHECK(IsValidFunctionKind(kind));
- return kind & FunctionKind::kGetterFunction;
+ return (kind & FunctionKind::kGetterFunction) != 0;
}
inline bool IsSetterFunction(FunctionKind kind) {
DCHECK(IsValidFunctionKind(kind));
- return kind & FunctionKind::kSetterFunction;
+ return (kind & FunctionKind::kSetterFunction) != 0;
}
inline bool IsAccessorFunction(FunctionKind kind) {
DCHECK(IsValidFunctionKind(kind));
- return kind & FunctionKind::kAccessorFunction;
+ return (kind & FunctionKind::kAccessorFunction) != 0;
}
inline bool IsDefaultConstructor(FunctionKind kind) {
DCHECK(IsValidFunctionKind(kind));
- return kind & FunctionKind::kDefaultConstructor;
+ return (kind & FunctionKind::kDefaultConstructor) != 0;
}
inline bool IsBaseConstructor(FunctionKind kind) {
DCHECK(IsValidFunctionKind(kind));
- return kind & FunctionKind::kBaseConstructor;
+ return (kind & FunctionKind::kBaseConstructor) != 0;
}
inline bool IsDerivedConstructor(FunctionKind kind) {
DCHECK(IsValidFunctionKind(kind));
- return kind & FunctionKind::kDerivedConstructor;
+ return (kind & FunctionKind::kDerivedConstructor) != 0;
}
inline bool IsClassConstructor(FunctionKind kind) {
DCHECK(IsValidFunctionKind(kind));
- return kind & FunctionKind::kClassConstructor;
+ return (kind & FunctionKind::kClassConstructor) != 0;
}
-
-inline bool IsConstructable(FunctionKind kind, LanguageMode mode) {
+inline bool IsConstructable(FunctionKind kind) {
if (IsAccessorFunction(kind)) return false;
if (IsConciseMethod(kind)) return false;
if (IsArrowFunction(kind)) return false;
@@ -1341,6 +1347,77 @@ enum ExternalArrayType {
kExternalUint8ClampedArray,
};
+// Static information used by SuspendGenerator bytecode & GeneratorStore, in
+// order to determine where to store bytecode offset in generator.
+enum class SuspendFlags {
+ kYield = 0,
+ kYieldStar = 1,
+ kAwait = 2,
+ kSuspendTypeMask = 3,
+
+ kGenerator = 0 << 2,
+ kAsyncGenerator = 1 << 2,
+ kGeneratorTypeMask = 1 << 2,
+
+ kBitWidth = 3,
+
+ // Aliases
+ kGeneratorYield = kGenerator | kYield,
+ kGeneratorYieldStar = kGenerator | kYieldStar,
+ kGeneratorAwait = kGenerator | kAwait,
+ kAsyncGeneratorYield = kAsyncGenerator | kYield,
+ kAsyncGeneratorYieldStar = kAsyncGenerator | kYieldStar,
+ kAsyncGeneratorAwait = kAsyncGenerator | kAwait
+};
+
+inline constexpr SuspendFlags operator&(SuspendFlags lhs, SuspendFlags rhs) {
+ return static_cast<SuspendFlags>(static_cast<uint8_t>(lhs) &
+ static_cast<uint8_t>(rhs));
+}
+
+inline constexpr SuspendFlags operator|(SuspendFlags lhs, SuspendFlags rhs) {
+ return static_cast<SuspendFlags>(static_cast<uint8_t>(lhs) |
+ static_cast<uint8_t>(rhs));
+}
+
+inline SuspendFlags& operator|=(SuspendFlags& lhs, SuspendFlags rhs) {
+ lhs = lhs | rhs;
+ return lhs;
+}
+
+inline SuspendFlags operator~(SuspendFlags lhs) {
+ return static_cast<SuspendFlags>(~static_cast<uint8_t>(lhs));
+}
+
+inline const char* SuspendTypeFor(SuspendFlags flags) {
+ switch (flags & SuspendFlags::kSuspendTypeMask) {
+ case SuspendFlags::kYield:
+ return "yield";
+ case SuspendFlags::kYieldStar:
+ return "yield*";
+ case SuspendFlags::kAwait:
+ return "await";
+ default:
+ break;
+ }
+ UNREACHABLE();
+ return "";
+}
+
+struct AssemblerDebugInfo {
+ AssemblerDebugInfo(const char* name, const char* file, int line)
+ : name(name), file(file), line(line) {}
+ const char* name;
+ const char* file;
+ int line;
+};
+
+inline std::ostream& operator<<(std::ostream& os,
+ const AssemblerDebugInfo& info) {
+ os << "(" << info.name << ":" << info.file << ":" << info.line << ")";
+ return os;
+}
+
} // namespace internal
} // namespace v8