diff options
author | Michaël Zasso <targos@protonmail.com> | 2021-11-21 15:58:15 +0100 |
---|---|---|
committer | Michaël Zasso <targos@protonmail.com> | 2021-11-21 16:04:41 +0100 |
commit | 3e9939e38cb4ecc7c8a9bd7cff64baca3a897eb3 (patch) | |
tree | 036ca0e8d0971c009a181a0ad3a7a158ea7f7e86 /deps/v8/src/debug/debug-evaluate.cc | |
parent | 42543bcf478debf7a10f1f291e227ad57b0a38b6 (diff) | |
download | node-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.cc | 97 |
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: |