summaryrefslogtreecommitdiff
path: root/deps/v8/src/debug/debug-evaluate.cc
diff options
context:
space:
mode:
authorMichaël Zasso <targos@protonmail.com>2021-11-21 15:58:15 +0100
committerMichaël Zasso <targos@protonmail.com>2021-11-21 16:04:41 +0100
commit3e9939e38cb4ecc7c8a9bd7cff64baca3a897eb3 (patch)
tree036ca0e8d0971c009a181a0ad3a7a158ea7f7e86 /deps/v8/src/debug/debug-evaluate.cc
parent42543bcf478debf7a10f1f291e227ad57b0a38b6 (diff)
downloadnode-new-3e9939e38cb4ecc7c8a9bd7cff64baca3a897eb3.tar.gz
deps: update V8 to 9.6.180.14
PR-URL: https://github.com/nodejs/node/pull/40488 Reviewed-By: Jiawen Geng <technicalcute@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'deps/v8/src/debug/debug-evaluate.cc')
-rw-r--r--deps/v8/src/debug/debug-evaluate.cc97
1 files changed, 80 insertions, 17 deletions
diff --git a/deps/v8/src/debug/debug-evaluate.cc b/deps/v8/src/debug/debug-evaluate.cc
index 5940e2dd02..915ed7833f 100644
--- a/deps/v8/src/debug/debug-evaluate.cc
+++ b/deps/v8/src/debug/debug-evaluate.cc
@@ -288,9 +288,8 @@ void DebugEvaluate::ContextBuilder::UpdateValues() {
}
}
-namespace {
-
-bool IntrinsicHasNoSideEffect(Runtime::FunctionId id) {
+// static
+bool DebugEvaluate::IsSideEffectFreeIntrinsic(Runtime::FunctionId id) {
// Use macro to include only the non-inlined version of an intrinsic.
#define INTRINSIC_ALLOWLIST(V) \
/* Conversions */ \
@@ -385,7 +384,6 @@ bool IntrinsicHasNoSideEffect(Runtime::FunctionId id) {
V(StringMaxLength) \
V(StringToArray) \
V(AsyncFunctionEnter) \
- V(AsyncFunctionReject) \
V(AsyncFunctionResolve) \
/* Test */ \
V(GetOptimizationStatus) \
@@ -395,7 +393,6 @@ bool IntrinsicHasNoSideEffect(Runtime::FunctionId id) {
// Intrinsics with inline versions have to be allowlisted here a second time.
#define INLINE_INTRINSIC_ALLOWLIST(V) \
V(AsyncFunctionEnter) \
- V(AsyncFunctionReject) \
V(AsyncFunctionResolve)
#define CASE(Name) case Runtime::k##Name:
@@ -418,6 +415,8 @@ bool IntrinsicHasNoSideEffect(Runtime::FunctionId id) {
#undef INLINE_INTRINSIC_ALLOWLIST
}
+namespace {
+
bool BytecodeHasNoSideEffect(interpreter::Bytecode bytecode) {
using interpreter::Bytecode;
using interpreter::Bytecodes;
@@ -753,6 +752,7 @@ DebugInfo::SideEffectState BuiltinGetSideEffectState(Builtin id) {
case Builtin::kStringFromCharCode:
case Builtin::kStringFromCodePoint:
case Builtin::kStringConstructor:
+ case Builtin::kStringListFromIterable:
case Builtin::kStringPrototypeAnchor:
case Builtin::kStringPrototypeAt:
case Builtin::kStringPrototypeBig:
@@ -831,6 +831,78 @@ DebugInfo::SideEffectState BuiltinGetSideEffectState(Builtin id) {
case Builtin::kAllocateRegularInOldGeneration:
return DebugInfo::kHasNoSideEffect;
+#ifdef V8_INTL_SUPPORT
+ // Intl builtins.
+ case Builtin::kIntlGetCanonicalLocales:
+ // Intl.Collator builtins.
+ case Builtin::kCollatorConstructor:
+ case Builtin::kCollatorInternalCompare:
+ case Builtin::kCollatorPrototypeCompare:
+ case Builtin::kCollatorPrototypeResolvedOptions:
+ case Builtin::kCollatorSupportedLocalesOf:
+ // Intl.DateTimeFormat builtins.
+ case Builtin::kDateTimeFormatConstructor:
+ case Builtin::kDateTimeFormatInternalFormat:
+ case Builtin::kDateTimeFormatPrototypeFormat:
+ case Builtin::kDateTimeFormatPrototypeFormatRange:
+ case Builtin::kDateTimeFormatPrototypeFormatRangeToParts:
+ case Builtin::kDateTimeFormatPrototypeFormatToParts:
+ case Builtin::kDateTimeFormatPrototypeResolvedOptions:
+ case Builtin::kDateTimeFormatSupportedLocalesOf:
+ // Intl.DisplayNames builtins.
+ case Builtin::kDisplayNamesConstructor:
+ case Builtin::kDisplayNamesPrototypeOf:
+ case Builtin::kDisplayNamesPrototypeResolvedOptions:
+ case Builtin::kDisplayNamesSupportedLocalesOf:
+ // Intl.ListFormat builtins.
+ case Builtin::kListFormatConstructor:
+ case Builtin::kListFormatPrototypeFormat:
+ case Builtin::kListFormatPrototypeFormatToParts:
+ case Builtin::kListFormatPrototypeResolvedOptions:
+ case Builtin::kListFormatSupportedLocalesOf:
+ // Intl.Locale builtins.
+ case Builtin::kLocaleConstructor:
+ case Builtin::kLocalePrototypeBaseName:
+ case Builtin::kLocalePrototypeCalendar:
+ case Builtin::kLocalePrototypeCalendars:
+ case Builtin::kLocalePrototypeCaseFirst:
+ case Builtin::kLocalePrototypeCollation:
+ case Builtin::kLocalePrototypeCollations:
+ case Builtin::kLocalePrototypeHourCycle:
+ case Builtin::kLocalePrototypeHourCycles:
+ case Builtin::kLocalePrototypeLanguage:
+ case Builtin::kLocalePrototypeMaximize:
+ case Builtin::kLocalePrototypeMinimize:
+ case Builtin::kLocalePrototypeNumeric:
+ case Builtin::kLocalePrototypeNumberingSystem:
+ case Builtin::kLocalePrototypeNumberingSystems:
+ case Builtin::kLocalePrototypeRegion:
+ case Builtin::kLocalePrototypeScript:
+ case Builtin::kLocalePrototypeTextInfo:
+ case Builtin::kLocalePrototypeTimeZones:
+ case Builtin::kLocalePrototypeToString:
+ case Builtin::kLocalePrototypeWeekInfo:
+ // Intl.NumberFormat builtins.
+ case Builtin::kNumberFormatConstructor:
+ case Builtin::kNumberFormatInternalFormatNumber:
+ case Builtin::kNumberFormatPrototypeFormatNumber:
+ case Builtin::kNumberFormatPrototypeFormatToParts:
+ case Builtin::kNumberFormatPrototypeResolvedOptions:
+ case Builtin::kNumberFormatSupportedLocalesOf:
+ // Intl.PluralRules builtins.
+ case Builtin::kPluralRulesConstructor:
+ case Builtin::kPluralRulesPrototypeResolvedOptions:
+ case Builtin::kPluralRulesPrototypeSelect:
+ case Builtin::kPluralRulesSupportedLocalesOf:
+ // Intl.RelativeTimeFormat builtins.
+ case Builtin::kRelativeTimeFormatConstructor:
+ case Builtin::kRelativeTimeFormatPrototypeFormat:
+ case Builtin::kRelativeTimeFormatPrototypeFormatToParts:
+ case Builtin::kRelativeTimeFormatPrototypeResolvedOptions:
+ case Builtin::kRelativeTimeFormatSupportedLocalesOf:
+ return DebugInfo::kHasNoSideEffect;
+#endif // V8_INTL_SUPPORT
+
// Set builtins.
case Builtin::kSetIteratorPrototypeNext:
case Builtin::kSetPrototypeAdd:
@@ -882,6 +954,7 @@ DebugInfo::SideEffectState BuiltinGetSideEffectState(Builtin id) {
case Builtin::kRegExpPrototypeUnicodeGetter:
case Builtin::kRegExpPrototypeStickyGetter:
return DebugInfo::kRequiresRuntimeChecks;
+
default:
if (FLAG_trace_side_effect_free_debug_evaluate) {
PrintF("[debug-evaluate] built-in %s may cause side effect.\n",
@@ -902,7 +975,7 @@ bool BytecodeRequiresRuntimeCheck(interpreter::Bytecode bytecode) {
case Bytecode::kStaCurrentContextSlot:
return true;
default:
- return false;
+ return interpreter::Bytecodes::IsCallRuntime(bytecode);
}
}
@@ -929,16 +1002,6 @@ DebugInfo::SideEffectState DebugEvaluate::FunctionGetSideEffectState(
for (interpreter::BytecodeArrayIterator it(bytecode_array); !it.done();
it.Advance()) {
interpreter::Bytecode bytecode = it.current_bytecode();
-
- if (interpreter::Bytecodes::IsCallRuntime(bytecode)) {
- Runtime::FunctionId id =
- (bytecode == interpreter::Bytecode::kInvokeIntrinsic)
- ? it.GetIntrinsicIdOperand(0)
- : it.GetRuntimeIdOperand(0);
- if (IntrinsicHasNoSideEffect(id)) continue;
- return DebugInfo::kHasSideEffects;
- }
-
if (BytecodeHasNoSideEffect(bytecode)) continue;
if (BytecodeRequiresRuntimeCheck(bytecode)) {
requires_runtime_checks = true;
@@ -979,7 +1042,7 @@ static bool TransitivelyCalledBuiltinHasNoSideEffect(Builtin caller,
switch (callee) {
// Transitively called Builtins:
case Builtin::kAbort:
- case Builtin::kAbortCSAAssert:
+ case Builtin::kAbortCSADcheck:
case Builtin::kAdaptorWithBuiltinExitFrame:
case Builtin::kArrayConstructorImpl:
case Builtin::kArrayEveryLoopContinuation: